Hallo,
derzeit sieht mein Quelltext so aus (funktioniert leider nicht wie gewünscht):
public List<string> readOrderNumber()
{
List<string> orderNumber = new List<string>();
XmlTextReader reader = new XmlTextReader(@"C:\\Users\\RadSpeyer\\Documents\\" + this.ordersResponseDataName);
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element: // The node is an element.
Console.Write("<" + reader.Name);
Console.WriteLine(">");
if (reader.Name == "AmazonOrderId")
{
orderNumber.Add(reader.Value);
Console.WriteLine(reader.Value);
}
break;
case XmlNodeType.Text: //Display the text in each element.
Console.WriteLine(reader.Value);
break;
case XmlNodeType.EndElement: //Display the end of the element.
Console.Write("</" + reader.Name);
Console.WriteLine(">");
break;
}
}
return orderNumber;
}
Hatte es aber auch schon hiermit probiert (natürlich an meine bedürfnisse angepasst):
string strFilename = "Data.xml";
XmlDocument doc = new XmlDocument();
doc.Load(strFilename);
XmlNode xnWasabi = doc.SelectSingleNode("/Movies/Movie[@Title='Wasabi']");
if (xnWasabi != null)
xnWasabi.Attributes["Title"].InnerText = "Testitesti";
doc.Save(strFilename);
Das 2. Code-Schnipsel ist ja genau das was ich gesucht habe. Nur wie bekomme ich eine Schleife hin, die mir die ganzen Elemente ausliest?
Beispiel XML-Datei von Amazon und die Werte sind einfach kopiert. Ich will von jedem Order-Element die AmazonOrderId in meine List schreiben.
<?xml version="1.0"?>
<ListOrdersResponse xmlns="https://mws.amazonservices.com/
Orders/2013-09-01">
<ListOrdersResult>
<NextToken>2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=</NextToken>
<LastUpdatedBefore>2013-09-25T18%3A10%3A21.687Z</LastUpdatedBefore>
<Orders>
<Order>
<AmazonOrderId>902-3159896-1390916</AmazonOrderId>
<ShipmentServiceLevelCategory>Standard
</ShipmentServiceLevelCategory>
<ShipServiceLevel>Std JP Kanto8</ShipServiceLevel>
<EarliestShipDate>2013-08-20T19:51:16Z</EarliestShipDate>
<LatestShipDate>2013-08-25T19:49:35Z</LatestShipDate>
<MarketplaceId>A1VC38T7YXB528</MarketplaceId>
<SalesChannel>Amazon.com</SalesChannel>
<OrderType>Preorder</OrderType>
<BuyerEmail>5vlhEXAMPLEh9h5@marketplace.amazon.com</BuyerEmail>
<FulfillmentChannel>MFN</FulfillmentChannel>
<OrderStatus>Pending</OrderStatus>
<BuyerName>John Jones</BuyerName>
<LastUpdateDate>2013-08-20T19:49:35Z</LastUpdateDate>
<PurchaseDate>2013-08-20T19:49:35Z</PurchaseDate>
<NumberOfItemsShipped>0</NumberOfItemsShipped>
<NumberOfItemsUnshipped>0</NumberOfItemsUnshipped>
<PaymentMethod>Other</PaymentMethod>
<IsBusinessOrder>true</IsBusinessOrder>
<PurchaseOrderNumber>PO12345678</PurchaseOrderNumber>
</Order>
<Order>
<AmazonOrderId>902-3159896-1390916</AmazonOrderId>
<ShipmentServiceLevelCategory>Standard
</ShipmentServiceLevelCategory>
<ShipServiceLevel>Std JP Kanto8</ShipServiceLevel>
<EarliestShipDate>2013-08-20T19:51:16Z</EarliestShipDate>
<LatestShipDate>2013-08-25T19:49:35Z</LatestShipDate>
<MarketplaceId>A1VC38T7YXB528</MarketplaceId>
<SalesChannel>Amazon.com</SalesChannel>
<OrderType>Preorder</OrderType>
<BuyerEmail>5vlhEXAMPLEh9h5@marketplace.amazon.com</BuyerEmail>
<FulfillmentChannel>MFN</FulfillmentChannel>
<OrderStatus>Pending</OrderStatus>
<BuyerName>John Jones</BuyerName>
<LastUpdateDate>2013-08-20T19:49:35Z</LastUpdateDate>
<PurchaseDate>2013-08-20T19:49:35Z</PurchaseDate>
<NumberOfItemsShipped>0</NumberOfItemsShipped>
<NumberOfItemsUnshipped>0</NumberOfItemsUnshipped>
<PaymentMethod>Other</PaymentMethod>
<IsBusinessOrder>true</IsBusinessOrder>
<PurchaseOrderNumber>PO12345678</PurchaseOrderNumber>
</Order>
<Order>
<AmazonOrderId>902-3159896-1390916</AmazonOrderId>
<ShipmentServiceLevelCategory>Standard
</ShipmentServiceLevelCategory>
<ShipServiceLevel>Std JP Kanto8</ShipServiceLevel>
<EarliestShipDate>2013-08-20T19:51:16Z</EarliestShipDate>
<LatestShipDate>2013-08-25T19:49:35Z</LatestShipDate>
<MarketplaceId>A1VC38T7YXB528</MarketplaceId>
<SalesChannel>Amazon.com</SalesChannel>
<OrderType>Preorder</OrderType>
<BuyerEmail>5vlhEXAMPLEh9h5@marketplace.amazon.com</BuyerEmail>
<FulfillmentChannel>MFN</FulfillmentChannel>
<OrderStatus>Pending</OrderStatus>
<BuyerName>John Jones</BuyerName>
<LastUpdateDate>2013-08-20T19:49:35Z</LastUpdateDate>
<PurchaseDate>2013-08-20T19:49:35Z</PurchaseDate>
<NumberOfItemsShipped>0</NumberOfItemsShipped>
<NumberOfItemsUnshipped>0</NumberOfItemsUnshipped>
<PaymentMethod>Other</PaymentMethod>
<IsBusinessOrder>true</IsBusinessOrder>
<PurchaseOrderNumber>PO12345678</PurchaseOrderNumber>
</Order>
<Order>
<AmazonOrderId>902-3159896-1390916</AmazonOrderId>
<ShipmentServiceLevelCategory>Standard
</ShipmentServiceLevelCategory>
<ShipServiceLevel>Std JP Kanto8</ShipServiceLevel>
<EarliestShipDate>2013-08-20T19:51:16Z</EarliestShipDate>
<LatestShipDate>2013-08-25T19:49:35Z</LatestShipDate>
<MarketplaceId>A1VC38T7YXB528</MarketplaceId>
<SalesChannel>Amazon.com</SalesChannel>
<OrderType>Preorder</OrderType>
<BuyerEmail>5vlhEXAMPLEh9h5@marketplace.amazon.com</BuyerEmail>
<FulfillmentChannel>MFN</FulfillmentChannel>
<OrderStatus>Pending</OrderStatus>
<BuyerName>John Jones</BuyerName>
<LastUpdateDate>2013-08-20T19:49:35Z</LastUpdateDate>
<PurchaseDate>2013-08-20T19:49:35Z</PurchaseDate>
<NumberOfItemsShipped>0</NumberOfItemsShipped>
<NumberOfItemsUnshipped>0</NumberOfItemsUnshipped>
<PaymentMethod>Other</PaymentMethod>
<IsBusinessOrder>true</IsBusinessOrder>
<PurchaseOrderNumber>PO12345678</PurchaseOrderNumber>
</Order>
</Orders>
</ListOrdersResult>
<ResponseMetadata>
<RequestId>88faca76-b600-46d2-b53c-0c8c4533e43a</RequestId>
</ResponseMetadata>
</ListOrdersResponse>
--
Vielen Dank
LG
Kevin
Da Du wohl neu im Bereich C# und XML ist, aber Dich damit beschäftigen musst, wäre es für Dich sehr ratsam, dass Du Dir die Grundlagen aneignest.
Übersicht über LINQ to XML
Letzten Endes wird Dich ein ordentliches Tutorial schneller und effizienter zu Deinem Ziel bringen, als wenn Du (wirklich einfache) Grundlagenthemen zu XML im Forum erfragst.
Du wirst hier sicherlich Hilfe bekommen, aber diese hat ja auch immer ein gewisses Delay.
Nimm also hoffentlich den Rat an, mach so ein Toturial durch und Du wirst eben viel schneller und mit weniger Aufwand und das auch noch mit einer höheren Qualität zu Deinem Ziel kommen, als wenn Du Code kopierst und den eigentlich gar nicht verstehst.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Nachdem ich mir das Zeug reingezogen habe und die Grundzüge verstanden habe, stehe ich gerade richtig auf dem Schlauch.
Ich bekomme hierbei nichts angezeigt:
public List<string> readOrderNumber()
{
List<string> orderNumber = new List<string>();
try
{
XElement root = XElement.Load(@"C:\\Users\\RadSpeyer\\Documents\\" + this.ordersResponseDataName);
IEnumerable<XElement> orders = root.Descendants("Orders");
foreach (XElement order in orders)
{
Console.WriteLine(order.Element("AmazonOrderId").Value);
}
}
catch (Exception ex)
{
// Exception properties are important for diagnostics.
Console.WriteLine("Exception:");
Console.WriteLine("Message: " + ex.Message);
throw ex;
}
return orderNumber;
}
Die XML-Datei ist die selbe wie oben.
--
Vielen Dank
LG
Kevin