<po-response xmlns="http://test.com/oms/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="rest/oms/export/v3/purchase-order.xsd">
<!--Generated on host [spapp403p.prod.ch4.s.com]-->
<purchase-order>
<customer-order-confirmation-number>335342876</customer-order-confirmation-number>
<customer-email>123456@test.com</customer-email>
<po-number>12345</po-number>
<po-date>2012-02-29</po-date>
<po-time>13:02:59</po-time>
<po-number-with-date>201202292988262</po-number-with-date>
<unit>9301</unit>
<site>Test</site>
<channel>VD</channel>
<location-id>1234</location-id>
<expected-ship-date>2013-06-05</expected-ship-date>
<shipping-detail>
<ship-to-name>JOHN DOH</ship-to-name>
<address>1234 MADE UP LANE</address>
<city>BLAH</city>
<state>KK</state>
<zipcode>1234</zipcode>
<phone>666123456</phone>
<shipping-method>Ground</shipping-method>
</shipping-detail>
<customer-name>JOHN DOH</customer-name>
<po-line>
<po-line-header>
<line-number>3</line-number>
<item-id>ABC-12345</item-id>
<item-name>Professional Chrome Dumbbell 1</item-name>
<selling-price-each>12.76</selling-price-each>
<commission>1.52</commission>
<order-quantity>2</order-quantity>
<shipping-and-handling>12.66</shipping-and-handling>
</po-line-header>
<po-line-detail>
<po-line-status>NEW</po-line-status>
<quantity>2</quantity>
</po-line-detail>
</po-line>
<po-line>
<po-line-header>
<line-number>2</line-number>
<item-id>BCD-33022</item-id>
<item-name>Professional Chrome Dumbbell 2</item-name>
<selling-price-each>13.82</selling-price-each>
<commission>1.14</commission>
<order-quantity>2</order-quantity>
<shipping-and-handling>18.66</shipping-and-handling>
</po-line-header>
<po-line-detail>
<po-line-status>NEW</po-line-status>
<quantity>2</quantity>
</po-line-detail>
</po-line>
<po-line>
<po-line-header>
<line-number>1</line-number>
<item-id>CDE-33021</item-id>
<item-name>Professional Chrome Dumbbell 3</item-name>
<selling-price-each>15.88</selling-price-each>
<commission>1.76</commission>
<order-quantity>2</order-quantity>
<shipping-and-handling>18.68</shipping-and-handling>
</po-line-header>
<po-line-detail>
<po-line-status>NEW</po-line-status>
<quantity>1</quantity>
</po-line-detail>
</po-line>
<order-total-sell-price>42.92</order-total-sell-price>
<total-commission>1.42</total-commission>
<total-shipping-handling>46.00</total-shipping-handling>
<balance-due>67.50</balance-due>
<sales-tax>15.13</sales-tax>
<po-status>New</po-status>
</purchase-order>
<purchase-order>
.
.
.
Мне нужен способ вернуть все детали, в частности, у меня возникла проблема, поскольку в приведенном выше случае их может быть любое количество, их три, и мне нужно просмотреть их в а затем перейти к следующему.
Я использовал следующий код с использованием XDcoument, который отлично работал только с одной строкой, но не мог заставить его работать более чем с одной.
xmlDoc = XDocument.Parse(sr.ReadToEnd());
XNamespace ns = "http://test.com/oms/v3";
var purchaseOrders = from purchaseOrder in xmlDoc.Descendants(ns + "purchase-order")
select new
{
PurcaseOrderNo = purchaseOrder.Element(ns + "po-number").Value,
PurchaseDate = purchaseOrder.Element(ns + "po-date").Value,
CustomerFullName = purchaseOrder.Element(ns + "customer-name").Value,
ItemId = purchaseOrder.Element(ns + "po-line").Element(ns + "po-line-header").Element(ns + "item-id").Value,
};
Я рассмотрел использование цикла foreach и итерацию по узлам, используя что-то вроде этого, но мне нужно вернуть другую информацию для этого порядка, а не просто ограничить результаты тем, что находится в узлах
foreach (XElement po in xmlDoc.Descendants(ns + "po-line"))
{
string ItemId = po.Element(ns + "po-line-header").Element(ns + "item-id").Value;
string SellingPrice = po.Element(ns + "po-line-header").Element(ns + "selling-price-each").Value;
}
Я ищу лучший способ сделать это, возможно, требуется сочетание двух или новый подход?
Таким образом, мне нужны результаты в одной строке, например, что-то вроде этого для каждого заказа на покупку, где данные клиента будут такими же, но itemId изменится:
customer email, po-number, ship-to name, item-id
123456@test.com, 12345, JOHN DOH, ABC-12345
123456@test.com, 12345, JOHN DOH, BCD-33022