以下は私のXML文書です。私はパンダDATAFRAMEにこのカスタムXMLを変換するにはどうすればよいカスタムXMLをJSONまたはPandas DataFrameに解析します。 (Python)
<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>
?
は、私はElementTreeのを使用してパンダに要素ツリーオブジェクトのリストを渡してみました「strのオブジェクトは属性タグを持っていません」というエラーをスローxmljsonを使用して、いくつかの事前定義されたcoversionsを試してみましたが、それが空にアップスローデータフレーム:
etree = ET.fromstring(xml_data)
df = pd.DataFrame(list(etree))
print(df)
私は現在、そのフィールドとしてカスタム列名としてFILTERNAMEに取りパーサ、および値を書き込むことを計画していますが、それは、ハードコーディングです。私は将来的にこの事を避けたいのです。もっと多くのフィールドが追加されたかのように、手動で手間をかけて追加する必要があります。
私は各行を繰り返し処理できる方法がありますか(ループで開くことができます)。また、Pandas DataFrameに列を動的に追加しますか?
また、効率的な方法がありますか?
注:XMLの有効性をW3Schoolsにチェックしました。エラーが見つかりませんでしたので、XMLは有効だと思います。
ありがとうございました