簡體   English   中英

使用帶有兩個列表的對象的XDocument創建XML

[英]Creating XML using XDocument with Object that has two Lists

我正在使用C#中的XDocument創建XML文檔。 我正在遍歷具有另一個集合的對象集合。 這是我嘗試創建的示例。

<Documents>
  <Document>
     <Field_1></Field_1>
     <Field_2></Field_2>
     <Field_3></Field_3>
     <Field_4></Field_4>
     <Address>
        <Item1></Item1>
        <Item2></Item2>
     </Address>
  </Document>
</Documents>

現在,使用下面的代碼,我可以在主要對象上使用我的foreach循環添加所有文檔及其字段,但是我無法使用在第一個foreach循環內的第二個foreach循環為每個文檔添加關聯的地址。 我似乎遇到的主要問題是,當我遇到一個文檔時,例如將5個文檔放入集合中,第二個foreach循環將第5個文檔的地址放入第1個文檔的地址塊中。 我需要它與5號文件一起使用,而不是1號文件。

 XDocument xmlDoc = XDocument.Load(Path.Combine(@"C:\XML_Template\", "XMLTemplate.xml"));
 XElement rootElement = xmlDoc.Element("DOCUMENTS");

        foreach (var pdf in PDFDocInfo) {
            rootElement.Add(
                new XElement("DOCUMENT",
                    new XElement("Field_1", pdf.F1),
                    new XElement("Field_2", pdf.F2),
                    new XElement("Field_3", pdf.F3),
                    new XElement("Field_4", pdf.F4),
                    ));
            foreach (var address in pdf.Address) {
                rootElement.Element("DOCUMENT").Add(
                    new XElement("Address",
                        new XElement("Item1", address.I1),
                        new XElement("Item2", address.I2));
                 }
             }

任何幫助表示贊賞。

在第一次迭代中,創建一個Document元素,填充字段,然后添加Address元素。 在第二次迭代中,添加第二個Document元素,填充字段,然后將Address元素添加到FIRST Document元素(rootElement.Element(“ DOCUMENT”)獲得第一個“ DOCUMENT”元素)。

https://msdn.microsoft.com/en-us/library/system.xml.linq.xcontainer.element(v=vs.110).aspx

相反,我將創建每個新的“ DOCUMENT”(包括地址),然后將其添加到“ DOCUMENTS”中。

foreach (var pdf in PDFDocInfo) {
    // create a "Document" element
    newDoc = new XElement("DOCUMENT",
        new XElement("Field_1", pdf.F1),
        new XElement("Field_2", pdf.F2),
        new XElement("Field_3", pdf.F3),
        new XElement("Field_4", pdf.F4),
    );
    // add any Address elements to newDoc
    foreach (var address in pdf.Address) {
        newDoc.Add(
            new XElement("Address",
                new XElement("Item1", address.I1),
                new XElement("Item2", address.I2));
        }
    }
    // add newDoc to Documents
    rootElement.Add(newDoc);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM