分析:字符串到XML

2024-10-01 13:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的API应该接受一个字符串并将其转换为XML格式。在

但我一直在犯这样的错误:

ParseError: mismatched tag: line 1, column 764

XML

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetails IssuerId="5" Version="12.2">
    <XMLRequest />
    <BookingDetails  Amount="768"  Comment="Hotel Travel Purchase"  CurrencyCode="INR"  PurchaseType="Hotel"  SupplierName="SomeHotel"  CardAlias="C_ALIAS"  ValidFor="-1D"  CurrencyType="B" />
    <CDFs>
        <CDF FieldName="Order Date" FieldValue="2015-01-01" />
    </CDFs>
    <SomeTag>
        <Rule Action="A" Alias="MyAlias">
            <Controls>
                <OPMCCControl Negate="False"/>
                <OPMIDControl />
                <SomeControlsTags       CumulativeLimit="768"       MaxTrans="None"                 Period="C" />
                <ValidityPeriod           ValidFrom="2015-01-01 00:00:00.0 +0000"          ValidTo="2015-01-11 00:00:00.0 +0000" />
            </Controls>
        </Rule>
    </SomeTag>
</BookingDetails>
<Email  EmailAddress="T@J.COM"/>
<MasterDetails />

实施方式:

^{pr2}$

我确信我的XML字符串包含所有匹配的标记,并且已经格式化,但是我眼前可能还缺少一些东西!!在


Tags: 字符串apitag格式错误xmlrulehotel
1条回答
网友
1楼 · 发布于 2024-10-01 13:40:27

这一行的BookingDetails标记是自关闭的:

<BookingDetails  Amount="768"  Comment="Hotel Travel Purchase"  CurrencyCode="INR"  PurchaseType="Hotel"  SupplierName="SomeHotel"  CardAlias="C_ALIAS"  ValidFor="-1D"  CurrencyType="B" />

但是当有一个单独的结束元素BookingDetails时:

^{pr2}$

另外,最后一行的<MasterDetails />没有正确闭合。应该是</MasterDetails>,而不是<MasterDetails />。在


请注意,如果使用了lxml.etree,则可以在"recover" mode中解析此XML:

import lxml.etree as ET

parser = ET.XMLParser(recover=True)
tree = ET.ElementTree(ET.fromstring(data, parser=parser)) 

或者,将^{}xml功能一起使用:

from bs4 import BeautifulSoup

soup = BeautifulSoup(data, "xml")
print(soup.prettify())

相关问题 更多 >