3
我有這個XML,我希望能夠拉出訂單#,項目,數量,ItemPrice(委託人,稅收,也可以是其他人)。這裏是XML(見下文)。我遇到的問題是ItemPrice。有了它,你可以從0到很多價格組成部分,稅金,本金等等。我怎樣才能將這些轉換爲單行輸出?幫助使用Linq查詢XML
現在我可以得到orderNumber,ItemNumber,Qty ...但是當我拉價格時,我得到一個稅和prinicpal的行。
另一個問題是,如果在某些情況下稅收不在那裏會發生什麼?我會得到一個空引用不會嗎?我想嘗試和處理這些,只是替代0.任何建議都非常appreicated。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<SettlementReport>
<Order>
<AmazonOrderID>105-6982537-6258888</AmazonOrderID>
<ShipmentID>MyShipmentIDTest1234</ShipmentID>
<MarketplaceName>Amazon.com</MarketplaceName>
<Fulfillment>
<MerchantFulfillmentID>MyTestFulFillID12345</MerchantFulfillmentID>
<PostedDate>2008-12-15T19:33:04+00:00</PostedDate>
<Item>
<AmazonOrderItemCode>13350774331938</AmazonOrderItemCode>
<SKU>U1409</SKU>
<Quantity>1</Quantity>
<ItemPrice>
<Component>
<Type>Principal</Type>
<Amount currency="USD">0.15</Amount>
</Component>
<Component>
<Type>Tax</Type>
<Amount currency="USD">0.02</Amount>
</Component>
</ItemPrice>
</Item>
<Item>
<AmazonOrderItemCode>13350774331939</AmazonOrderItemCode>
<SKU>U14010</SKU>
<Quantity>2</Quantity>
<ItemPrice>
<Component>
<Type>Principal</Type>
<Amount currency="USD">0.30</Amount>
</Component>
<Component>
<Type>Tax</Type>
<Amount currency="USD">0.04</Amount>
</Component>
</ItemPrice>
</Item>
</Fulfillment>
</Order>
</SettlementReport>
我的代碼:
XDocument customer = XDocument.Load(@"C:\LinqToXML.xml");
var orders = from amznorders in customer.Root.Elements("Order")
from amznfulfill in amznorders.Elements("Fulfillment")
from amznitems in amznfulfill.Elements("Item")
from amznitemprc in amznitems.Elements("ItemPrice").Elements("Component")
select new
{
OrderNumber = (string)amznorders.Element("AmazonOrderID"),
ItemNumber = (string)amznitems.Element("AmazonOrderItemCode"),
QTY = (string)amznitems.Element("Quantity"),
//This is where I need help...if type = Principal set PriceAmount else Set PriceTax?//
PriceAmount = (string)amznitemprc.Element("Amount")
//Address1 = (string)address1.Element("Address1")
};
foreach (var order in orders)
{
Console.WriteLine("Order: {0} ItemNumber: {1} QTY: {2} PriceAmount: {3} ", order.OrderNumber, order.ItemNumber, order.QTY, order.PriceAmount);
}
雅各布,使用不同的方法會更好嗎?我沒有被Linq困住,只是覺得我應該嘗試利用它。 感謝您的提示,我會檢查出來。 – scarpacci 2010-01-30 04:05:47
當我嘗試它時,let變量中的Where似乎不被識別。有什麼想法嗎? – scarpacci 2010-01-30 14:25:31
有趣。我想知道Where Where會在以後註冊。我不在一個地方,我可以在明天之前對它進行測試,但是我會編輯一些東西。不過,它會有點複雜。 – 2010-02-01 04:57:14