我有两个XML文档。 我的目标是用第二个Xml文档的全部内容替换第一个文档中的一个节点。 所以第一个文档 - Parent 看起来像这样:
<Root>
<AgencyName = "Some Agency"/>
<Originator = "Some other Agency"/>
<Type = "AnonymousType"/>
<Details/>
</Root>
第二个文件 - 儿童如下所示:
<Root>
<Details>
<Detail1>
...
</Detail1>
<Detail2>
...
</Detail2>
<Detail3>
...
</Detail3>
</Details>
</Root>
必须将节点<Details/>
替换为第二个文档的内容。
我试图使用Linq to XML来做到这一点。第一个文档在XDocument类中表示,第二个文档在XElement类中表示。 <Detail/>
有几个子属性,我没有在这里列出。
我试图用这个XElement类替换第一个文档中的元素。 如果我尝试这样的话,
ParentDoc.Element("Details").ReplaceAll(children);
它不太可行。 我应该如何替换?
答案 0 :(得分: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>