0

我有两个 XML 文档。我的目标是用第二个 Xml 文档的全部内容替换第一个文档中的一个节点。所以第一个文档 - Parent看起来像这样:

<Root>
    <AgencyName = "Some Agency"/>
    <Originator = "Some other Agency"/>
    <Type = "AnonymousType"/>
    <Details/>
</Root>

第二个文档 - children如下所示:

<Root>
    <Details>
        <Detail1>
            ...
        </Detail1>
        <Detail2>
            ...
        </Detail2>
        <Detail3>
            ...
        </Detail3>
    </Details>
</Root>

该节点<Details/>必须替换为第二个文档的内容。我正在尝试使用 Linq to XML 来执行此操作。第一个文档在 XDocument 类中表示,第二个文档在 XElement 类中表示。有几个子属性<Detail/>,我没有在这里列出。

我试图用这个 XElement 类替换第一个文档中的元素。如果我尝试这样的事情,

ParentDoc.Element("Details").ReplaceAll(children);

它不太可能奏效。我应该如何更换?

4

1 回答 1

2
var doc = XDocument.Load(@"C:\Tools\test.xml");
var doc2 = XDocument.Load(@"C:\Tools\test2.xml");
var children = doc2.Root.Element("Details");
var parentNode = doc.Root.Element("Details");
parentNode.ReplaceWith(children);

顺便说一句,您的 xml 不正确,因此您会遇到异常。

我试过了

<Root>
    <AgencyName name= "Some Agency"/>
    <Originator name= "Some other Agency"/>
    <Type name= "AnonymousType"/>
    <Details/>
</Root>

<Root>
    <Details>
        <Detail1>
           asdf
        </Detail1>
        <Detail2>
            asde
        </Detail2>
        <Detail3>
            eere
        </Detail3>
    </Details>
</Root>

并得到

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <AgencyName name="Some Agency" />
  <Originator name="Some other Agency" />
  <Type name="AnonymousType" />
  <Details>
    <Detail1>
           asdf
        </Detail1>
    <Detail2>
            asde
        </Detail2>
    <Detail3>
            eere
        </Detail3>
  </Details>
</Root>
于 2012-07-30T18:51:11.370 回答