J'ai ce XML que je veux être capable de retirer le numéro de commande, le (s) article (s), la quantité, le prix de l'article (principal, taxe, etc.). Voici le XML (voir ci-dessous). Ce que j'ai des problèmes avec est le ItemPrice. Avec cela vous pouvez 0 à plusieurs composantes de prix, impôt, principal etc. Comment puis-je les sortir dans une sortie de ligne unique?Aide en utilisant Linq pour interroger XML
Maintenant, je peux obtenir orderNumber, ItemNumber, Qty ... mais quand je tire le prix, je reçois une ligne pour la taxe et prinicpal.
Une autre question est ce qui se passe si dans certains cas, la taxe n'est pas là? Je vais obtenir une référence nulle, n'est-ce pas? Je veux essayer et manipuler ceux et remplacer juste 0. Toutes les suggestions sont grandement appréciées.
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>
Mon code:
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);
}
Jacob, serait-il préférable d'utiliser une méthode différente? Je ne suis pas coincé sur Linq, je pensais juste que je devrais essayer d'en profiter. Merci pour le conseil que je vais vérifier. – scarpacci
Lorsque je l'essaie, les variables Où dans les let ne semblent pas être reconnues. Des pensées? – scarpacci
Intéressant. Je me demande si le Où s'inscrirait plus tard. Je ne suis pas dans un endroit où je peux le tester jusqu'à demain, mais je vais éditer quelque chose. Ce sera un peu complexe, cependant. –