【发布时间】:2015-07-13 20:04:43
【问题描述】:
我有两个 XML 文件: 订单列表.xml
<ListOrderItemsResponse xmlns="https://mws.amazonservices.com/Orders/2013-09-01">
<ListOrderItemsResult>
<AmazonOrderId>102-7574501-6521843</AmazonOrderId>
<OrderItems>
<OrderItem>
<ASIN>B00PBOOX6C</ASIN>
<SellerSKU>OJ-J0CO-4SEH</SellerSKU>
<OrderItemId>03136321944794</OrderItemId>
<Title>Nitric Acid 70% , ACS, REAGENT Grade, Alliance Chemical Brand, 2.5 Liter(7 Lbs) Bottle</Title>
<QuantityOrdered>1</QuantityOrdered>
<QuantityShipped>0</QuantityShipped>
<ItemPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>108.00</Amount>
</ItemPrice>
<ShippingPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>27.00</Amount>
</ShippingPrice>
<GiftWrapPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</GiftWrapPrice>
<ItemTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ItemTax>
<ShippingTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ShippingTax>
<GiftWrapTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</GiftWrapTax>
<ShippingDiscount>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ShippingDiscount>
<PromotionDiscount>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</PromotionDiscount>
<PromotionIds />
<ConditionId>New</ConditionId>
<ConditionSubtypeId>New</ConditionSubtypeId>
</OrderItem>
</OrderItems>
</ListOrderItemsResult>
<ResponseMetadata>
<RequestId>2b407071-501d-45a2-9baa-2f5ec24f61e7</RequestId>
</ResponseMetadata>
</ListOrderItemsResponse>
和orderlist2.xml:
<ListOrderItemsResponse xmlns="https://mws.amazonservices.com/Orders/2013-09-01">
<ListOrderItemsResult>
<AmazonOrderId>112-5324115-6814611</AmazonOrderId>
<OrderItems>
<OrderItem>
<ASIN>B00PGF7U6G</ASIN>
<SellerSKU>60-JOUW-Q8HA</SellerSKU>
<OrderItemId>19976596962514</OrderItemId>
<Title>Nitric Acid 70% , ACS REAGENT GRADE, 2.5 Liter(7 Lbs) Bottle</Title>
<QuantityOrdered>1</QuantityOrdered>
<QuantityShipped>0</QuantityShipped>
<ItemPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>108.00</Amount>
</ItemPrice>
<ShippingPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>27.00</Amount>
</ShippingPrice>
<GiftWrapPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</GiftWrapPrice>
<ItemTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ItemTax>
<ShippingTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ShippingTax>
<GiftWrapTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</GiftWrapTax>
<ShippingDiscount>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ShippingDiscount>
<PromotionDiscount>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</PromotionDiscount>
<PromotionIds />
<ConditionId>New</ConditionId>
<ConditionSubtypeId>New</ConditionSubtypeId>
</OrderItem>
</OrderItems>
</ListOrderItemsResult>
<ResponseMetadata>
<RequestId>e9e67246-c07d-4bf0-825b-929cd37c694f</RequestId>
</ResponseMetadata>
</ListOrderItemsResponse>
合并后的 XML 文件如下所示:
<AmazonOrderId>112-5324115-6814611</AmazonOrderId>
<OrderItems>
<OrderItem>
<ASIN>B00PGF7U6G</ASIN>
<SellerSKU>60-JOUW-Q8HA</SellerSKU>
<OrderItemId>19976596962514</OrderItemId>
<Title>Nitric Acid 70% , ACS REAGENT GRADE, 2.5 Liter(7 Lbs) Bottle</Title>
<QuantityOrdered>1</QuantityOrdered>
<QuantityShipped>0</QuantityShipped>
<ItemPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>108.00</Amount>
</ItemPrice>
<ShippingPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>27.00</Amount>
</ShippingPrice>
<GiftWrapPrice>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</GiftWrapPrice>
<ItemTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ItemTax>
<ShippingTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ShippingTax>
<GiftWrapTax>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</GiftWrapTax>
<ShippingDiscount>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</ShippingDiscount>
<PromotionDiscount>
<CurrencyCode>USD</CurrencyCode>
<Amount>0.00</Amount>
</PromotionDiscount>
<PromotionIds />
<ConditionId>New</ConditionId>
<ConditionSubtypeId>New</ConditionSubtypeId>
</OrderItem>
<OrderItem>
<Title>Nitric Acid 70% , ACS REAGENT GRADE, 2.5 Liter(7 Lbs)</Title>
<QuantityOrdered>1</QuantityOrdered>
<ItemPrice>
<Amount>108.00</Amount>
</ItemPrice>
<ShippingPrice>
<Amount>27.00</Amount>
</ShippingPrice>
</OrderItem>
</OrderItems>undefined</ListOrderItemsResult>undefined<ResponseMetadata>
<RequestId>e9e67246-c07d-4bf0-825b-929cd37c694f</RequestId>undefined</ResponseMetadata>
我想将第二个文件附加到第一个文件,但我想从第二个文件中获取的唯一元素是 <Title>、<QuantityOrdered>、<ItemPrice>、<Amount>、<ShippingPrice>、<Amount>。我认为父元素是,数据应该封装在<OrderItem> 标签中。我该怎么做?
【问题讨论】:
-
如果你直接追加,它将不是有效的 XML。
-
解析XML,组合内容并写出来。
-
@cubrr 我认为这根本没有意义。组合内容也可能导致错误的结果。也许它是有效的 xml,但结构失去了意义。起初我以为您可以将所有 OrderItem 组合在一个 OrderItems 节点中,但随后您将失去唯一的 AmazonOrderId。因此,必须在树中向上移动一个节点。那将是 ListOrderItemsResult。但顾名思义,它不是一个列表。因此,如果不失去语义,就不可能在一个文档中结合订单。
-
不清楚你期望的结果是什么样的 - 正如已经说过的,你不能把这两者结合在一起。
-
为什么这不是有效的 XML?我有一个亚马逊 API,每次调用一次只能获取一个订单。但是我需要收集所有订单,所以我需要迭代调用函数并返回 XML 字符串,然后每次都将其附加到文件中 - 以创建订单列表。