簡體   English   中英

如何遍歷XDocument的XElement節點並添加到另一個XElelement?

[英]How to iterate through XElement Nodes of XDocument and add to another XElelement?

我有一個看起來像這樣的XML文檔:

<Person>
  <LastName>LastName1</LastName>
  <FirstName>FirstName1</FirstName>
  <MiddleName>MiddleName1</MiddleName>
</Person>

最初,我有一種創建這種結構的方法,如下所示:

public XElement ToXML()
{
  return new XElement("Person",
    new XElement(this.LastName.ToXML()),
    new XElement(this.FirstName.ToXML()),
    new XElement(this.MiddleName.ToXML()));
}

問題在於,除了Person ,還有許多其他節點在根中使用Name值。 所以我嘗試做的是使用ToXMLDoc()方法將FirstNameLastNameMiddleName元素重構為它們自己的可重用類,該方法將這些元素作為XDocument而不是XElement (因為根將由該類決定)需要孩子的名字;可能是PersonEmployee等)

這是我的新ToXMLDoc返回的內容:

return new XDocument(new XElement(this.LastName.ToXML()),
                     new XElement(this.FirstName.ToXML()),
                     new XElement(this.MiddleName.ToXML()));

我的問題是我現在想將此內容添加到我的Person類添加的根XElement 我嘗試做類似下面的操作,但是我沒有正確使用構造函數,並收到“ Ambiguous Constructor reference ”錯誤。

return new XElement("Person",
    foreach (XElement xe in NameType.ToXMLDoc().Nodes())
    {
      new XElement(xe.Value);
    }
);

如何從ToXMLDoc()方法獲取內容並將其添加到為Person創建的XElement節點中? 任何幫助表示贊賞,謝謝!

您當前正在嘗試構造函數調用中嵌入foreach循環。 那行不通-但實際上很簡單:

return new XElement("Person", NameType.ToXMLDoc()
                                      .Nodes()
                                      .Select(xe => new XElement(xe.Value));

確定不只是要批量復制元素嗎? 在這種情況下,它將是:

return new XElement("Person", NameType.ToXMLDoc().Nodes());

我將返回XElement ,而不是XDocument

這樣,您可以執行以下操作:

new XElement("Person", NameType.ToXMLDoc())

暫無
暫無

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

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