0

2 つの XML ドキュメントがあります。私の目的は、最初のドキュメントのノードの 1 つを 2 番目の Xml ドキュメントの内容全体に置き換えることです。したがって、最初のドキュメント -は次のようになります。

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

2 番目のドキュメント -は次のようになります。

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

ノード<Details/>は、2 番目のドキュメントの内容に置き換える必要があります。これを行うためにLinq to XMLを使用しようとしています。最初のドキュメントは XDocument クラスで表され、2 番目のドキュメントは 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 に答える