【发布时间】:2017-01-02 01:51:20
【问题描述】:
以下是我的xml文档。
<BizTalk xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Body>
<QUEUE>
<FILTER FILTERNAME="CorrectAddress" VALUE="1" />
<FILTER FILTERNAME="DaysSinceLastTracking" VALUE="0" />
<FILTER FILTERNAME="DaysSinceShipped" VALUE="3" />
<FILTER FILTERNAME="DaysUntilDelivered" VALUE="735101" />
<FILTER FILTERNAME="DeliveryStatus" VALUE="IN_TRANSIT" />
<FILTER FILTERNAME="Division" VALUE="71" />
<FILTER FILTERNAME="EmptyBox" VALUE="0" />
<FILTER FILTERNAME="FedVendInstructions" VALUE="" />
<FILTER FILTERNAME="ItemDescription" VALUE="bla bla bla" />
<FILTER FILTERNAME="ItemIssue" VALUE="Damaged" />
<FILTER FILTERNAME="ItemValue" VALUE="50" />
<FILTER FILTERNAME="PiecedSet" VALUE="0" />
<FILTER FILTERNAME="HasProofOfDelivery" VALUE="0" />
<FILTER FILTERNAME="RecievedPOD" VALUE="0" />
<FILTER FILTERNAME="RequestedAction" VALUE="Reship" />
<FILTER FILTERNAME="HasReturntracking" VALUE="0" />
<FILTER FILTERNAME="IsStandardFillLocation" VALUE="1" />
<FILTER FILTERNAME="Tampered" VALUE="0" />
<FILTER FILTERNAME="HasTracking" VALUE="1" />
<FILTER FILTERNAME="ShortName" VALUE="BDD" />
<FILTER FILTERNAME="IsBOPS" VALUE="0" />
<FILTER FILTERNAME="WrongItemType" VALUE="" />
</QUEUE>
<RESPONSEDATA>
<ITEMS>
<DATA CanReOrder="1" UPC="xxxxxxx" Quantity="1" LineNumber="1" Description="bla bla bla" />
</ITEMS>
<DATA ITEM="Reservation" VALUE="????????" />
<DATA ITEM="ShipmentNumber" VALUE="1" />
<DATA ITEM="ContactedBy" VALUE="Shipping Customer" />
<DATA ITEM="PackageRecieved" VALUE="1" />
<DATA ITEM="CheckedEverywhere" VALUE="0" />
</RESPONSEDATA>
如何将此自定义 XML 转换为 Pandas DataFrame?
我尝试了一些使用 xmljson 的预定义覆盖,这会引发错误“str object doesn't have attribute tag”
我尝试使用 ELementTree 并将元素树对象列表传递给 Pandas,它会抛出空 Dataframe:
etree = ET.fromstring(xml_data)
df = pd.DataFrame(list(etree))
print(df)
我目前正计划编写自定义解析器,它将 FilterName 作为列名,将值作为其字段,但这是硬编码。以后想避免这种事情,好像多了个字段,就得手动加了,很麻烦。
是否有某种方法可以遍历每一行(可以使用 Loop with Open 来完成)。并动态向 Pandas DataFrame 添加列?
或者有什么有效的方法吗?
注意:我在W3Schools 上检查了 XML 的有效性,它说没有发现错误,所以我相信 XML 是有效的。
谢谢
【问题讨论】:
标签: python json xml pandas xml-parsing