我正在尝试使用带有elementree的XML属性对XML文件中大量嵌套的元素进行排序。我需要阅读的XML元素的结构如下:
<ChargeItem>
<!-- some other data-->
<SupplementaryOffer OfferID=SomeIdNumber>
<!-- more data-->
</SupplementaryOffer>
</ChargeItem>
我的代码下一步应该做:
SupplementaryOffer
标记OfferID
属性李>OrderID
李>ChargeItem
内的OrderID
对每个SuplementaryOffer
排序李>我现在需要做的是:对每个SupplementaryOffer
(4)进行排序
此代码:
for c in tree.iter("ChargeItem"):
c[:] = sorted(c, key=lambda child: (child.tag,child.get('OrderId')))
这是我用来尝试和排序,但据我所知,这是没有任何功能
以下是已添加“OrderId”属性的现有XML的缩减:
<BATCH >
<BILL>
<Somebillinfo>0</Somebillinfo>
<INVtype>2</INVtype>
<PageOne>
<Stuff></Stuff>
</PageOne>
<Page2>
<ServiceAddressCharges>
<ServiceAddress>
<ServiceAddress1>221B Baker Street</ServiceAddress1>
</ServiceAddress>
<ProductsSection>
<BrilliantProducts id="20033" DisplayMethod="0">Snack services
<ChargeItemList>
<ServiceNo>0123456478</ServiceNo>
<PrimaryOffer OfferId="80000000">Blueberry Icecream</PrimaryOffer>
<ParentBundle SortKey="NO_BUNDLE" ParentBundleId="0" ConnectReason="0" DisconnectReason="0">
<Bundle SortKey="NO_BUNDLE" BundleId="0" ConnectReason="0" DisconnectReason="0">
<ChargeItem SortKey="ICE">
<SupplementaryOffer OfferId="80000000" ConnectReason="1" DisconnectReason="0" OrderId="23">Fishfingers & Custard
<MonthAmount ProrateCode="0" BillRecur="4" FromDate="2019-07-11" ToDate="2019-08-10" Discount="0.00" Qty="1">4.00</MonthAmount>
</SupplementaryOffer>
<SupplementaryOffer OfferId="80000132" ConnectReason="1" DisconnectReason="0" OrderId="2">A large amount of potato
<MonthAmount ProrateCode="0" BillRecur="71" FromDate="2019-07-11" ToDate="2019-08-10" Discount="0.00" Qty="1">1.00</MonthAmount>
</SupplementaryOffer>
</ChargeItem>
<ChargeItem SortKey="NODSP">
<SupplementaryOffer OfferId="80003606" ConnectReason="1" DisconnectReason="0" OrderId="10">Smaller amount of potato
<DateStart>2016-11-04</DateStart>
<UsageAmount Discount="627.68">630.13</UsageAmount>
<UsageItem>
<ChargeDescr>IncludedSnacks</ChargeDescr>
</UsageItem>
<UsageItem>
<ChargeDescr>SharedSnacks</ChargeDescr>
</UsageItem>
</SupplementaryOffer>
<SupplementaryOffer OfferId="80000132" ConnectReason="1" DisconnectReason="0" OrderId="2">A ginormous amount of potato
<MonthAmount ProrateCode="0" BillRecur="71" FromDate="2019-07-11" ToDate="2019-08-10" Discount="0.00" Qty="1">1.00</MonthAmount>
</SupplementaryOffer>
</ChargeItem>
</Bundle>
</ParentBundle>
</ChargeItemList>
</BrilliantProducts>
</ProductsSection>
</ServiceAddressCharges>
</Page2>
</BILL>
</BATCH >
基于“OrderID”属性的排序,我希望第一个“ChargeItem”的结果是:
<ChargeItem SortKey="ICE">
<SupplementaryOffer OfferId="80000132" ConnectReason="1" DisconnectReason="0" OrderId="2">A large amount of potato
<MonthAmount ProrateCode="0" BillRecur="71" FromDate="2019-07-11" ToDate="2019-08-10" Discount="0.00" Qty="1">1.00</MonthAmount>
</SupplementaryOffer>
<SupplementaryOffer OfferId="80000000" ConnectReason="1" DisconnectReason="0" OrderId="23">Fishfingers & Custard
<MonthAmount ProrateCode="0" BillRecur="4" FromDate="2019-07-11" ToDate="2019-08-10" Discount="0.00" Qty="1">4.00</MonthAmount>
</SupplementaryOffer>
</ChargeItem>
目前没有回答
相关问题 更多 >
编程相关推荐