[英]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()
方法將FirstName
, LastName
和MiddleName
元素重構為它們自己的可重用類,該方法將這些元素作為XDocument
而不是XElement
(因為根將由該類決定)需要孩子的名字;可能是Person
, Employee
等)
這是我的新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.