Ich habe eine XML-Datei, die wie folgt aussieht:Challenge-Umstrukturierung XML
<SalesOrders>
<Header>
<CustomerID>456554</CustomerID>
<BuyerID>312</BuyerID>
<OrderNbr>S392392</OrderNbr>
</Header>
<Item>
<Item>E565-14</Item>
<Quantity>65</Quantity>
<Price>33.45</Price>
</Item>
<Item>
<Item>G916-22</Item>
<Quantity>654</Quantity>
<Price>655.22</Price>
</Item>
<Header>
<CustomerID>156557</CustomerID>
<BuyerID>35</BuyerID>
<OrderNbr>S394545</OrderNbr>
</Header>
<Item>
<Item>GS654-88</Item>
<Quantity>78</Quantity>
<Price>2.11</Price>
</Item>
</SalesOrders>
ich so will umstrukturieren meine XML, dass ich die Header-& (r) Artikel innerhalb Bestell Knoten wie dieses:
<SalesOrders>
<Order>
<Header>
<CustomerID>456554</CustomerID>
<BuyerID>312</BuyerID>
<OrderNbr>S392392</OrderNbr>
</Header>
<Item>
<Item>E565-14</Item>
<Quantity>65</Quantity>
<Price>33.45</Price>
</Item>
<Item>
<Item>G916-22</Item>
<Quantity>654</Quantity>
<Price>655.22</Price>
</Item>
</Order>
<Order>
<Header>
<CustomerID>156557</CustomerID>
<BuyerID>35</BuyerID>
<OrderNbr>S394545</OrderNbr>
</Header>
<Item>
<Item>GS654-88</Item>
<Quantity>78</Quantity>
<Price>2.11</Price>
</Item>
</Order>
</SalesOrders>
Ich bin vertraut mit C# und kenne auch einige LINQ. Ich kann nicht das richtige Beispiel dafür finden, wie ich dies aus den Online-Beispielen, nach denen ich gesucht habe, machen kann.
Gibt es jemanden, der ein Beispiel wie dies erreicht werden kann?
Danke
ich ohne den Code zu entschuldigen. Dieser Code kombiniert tatsächlich viele einzelne XML-Dateien in einer XML-Datei. Mein ursprünglicher Plan war, die Order-Knoten in den XML-Code einzufügen, nachdem die endgültige XML-Ausgabedatei erstellt wurde. Vielleicht ist das nicht die beste Methode dafür? Ich bin offen für alle Vorschläge. Hier ist der Code:
public void CombineXMLFiles()
{
string[] XMLFiles = null;
XmlDocument CombineXMLDoc = new XmlDocument();
CombineXMLDoc.LoadXml("<SalesOrders></SalesOrders>");
XMLFiles = Directory.GetFiles("e:\\data\\xml\\", "529485*.xml");
foreach (void FileName_loopVariable in XMLFiles) {
FileName = FileName_loopVariable;
FileInfo FileInfo = new FileInfo(FileName);
if (FileInfo.Length <= 0) {
File.Delete(FileName);
continue;
}
XmlDocument OrderXMLDoc = new XmlDocument();
OrderXMLDoc.Load(FileName);
foreach (XmlNode Node in OrderXMLDoc.DocumentElement.ChildNodes) {
switch (Node.Name.ToUpper) {
case "HEADER":
XmlNode OrderNode = CombineXMLDoc.ImportNode(Node, true);
CombineXMLDoc.DocumentElement.AppendChild(OrderNode);
break;
case "ITEM":
XmlNode OrderNode = CombineXMLDoc.ImportNode(Node, true);
CombineXMLDoc.DocumentElement.AppendChild(OrderNode);
break;
default:
continue;
}
}
}
string dtStamp = DateTime.Now.ToString("yyyyMMddHHmmss");
CombineXMLFileName = "e:\\data\\xml\\output\\" + "STC_" + dtStamp + ".XML";
CombineXMLDoc.Save(CombineXMLFileName);
}
Können Sie Ihren aktuellen Code zeigen, dass Sie Hilfe benötigen? – xxbbcc
Alles, was gepostet wurde, ist eine Programmbeschreibung. Allerdings müssen Sie [eine Frage stellen] (// stackoverflow.com/help/how-to-ask). Wir können nicht sicher sein, was Sie von uns wollen. Bitte [bearbeiten] Sie Ihren Beitrag, um eine gültige Frage zu enthalten, die wir beantworten können. Erinnerung: stellen Sie sicher, dass Sie wissen, was hier zu tun ist (// stackoverflow.com/help/on-topic), und bitten Sie uns, das Programm für Sie zu schreiben, und Vorschläge sind nicht Thema. – gunr2171
Der Code, den ich habe, nimmt viele einzelne XML-Dateien und hängt sie an eine einzige XML-Ausgabedatei an. – user3613998