0

我有一个如下所示的 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 值之外,还有很多其他节点。所以我尝试做的是将 , 和 元素重构FirstNameLastName它们MiddleName自己的可重用类,并使用一种ToXMLDoc()方法将这些元素返回为 aXDocument而不是 a XElement(因为根将由需要名称 children 的类决定;可能是PersonEmployee, ETC。)

这是我的新ToXMLDoc回报:

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

我的问题是我现在想将此内容添加到我的班级添加根目录中。我尝试做类似下面的事情,但我没有正确使用构造函数并得到“模棱两可的构造函数引用”错误。XElementPerson

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

如何从ToXMLDoc()方法中获取内容并将它们添加到XElement正在为其创建的节点Person?任何帮助表示赞赏,谢谢!

4

2 回答 2

1

您当前正在尝试构造函数调用中嵌入foreach循环。那是行不通的——但实际上很简单:

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

确定你不只是想批发复制元素吗?在这种情况下,它只是:

return new XElement("Person", NameType.ToXMLDoc().Nodes());
于 2013-02-04T14:58:42.730 回答
0

I would return an XElement, rather than an XDocument

This way you could just do:

new XElement("Person", NameType.ToXMLDoc())
于 2013-02-04T14:59:28.687 回答