我有一个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值。所以我尝试做的是将FirstName
,LastName
和MiddleName
元素重构为他们自己的可重用类,并使用ToXMLDoc()
方法将这些元素作为{返回{1}}而不是XDocument
(因为根将由需要名称为child的类决定;可能是XElement
,Person
等。
这是我的新Employee
返回的内容:
ToXMLDoc
我的问题是,我现在要将此内容添加到 我的return new XDocument(new XElement(this.LastName.ToXML()),
new XElement(this.FirstName.ToXML()),
new XElement(this.MiddleName.ToXML()));
类添加的根XElement
中。我尝试过类似下面的操作,但是我没有正确使用构造函数并且出现“ 不明确的构造函数引用 ”错误。
Person
如何从return new XElement("Person",
foreach (XElement xe in NameType.ToXMLDoc().Nodes())
{
new XElement(xe.Value);
}
);
方法中获取内容并将其添加到为ToXMLDoc()
创建的XElement
节点?感谢任何帮助,谢谢!
答案 0 :(得分:1)
您目前正在尝试在构造函数调用中嵌入foreach
循环。这不会起作用 - 但实际上非常简单:
return new XElement("Person", NameType.ToXMLDoc()
.Nodes()
.Select(xe => new XElement(xe.Value));
你确定你不只是想复制批发元素吗?在这种情况下,它只是:
return new XElement("Person", NameType.ToXMLDoc().Nodes());
答案 1 :(得分:0)
我会返回XElement
,而不是XDocument
这样你就可以做到:
new XElement("Person", NameType.ToXMLDoc())