gpt4 book ai didi

c# - 用另一个 XmlDocument 文件替换 XmlDocument 中的节点集

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:49 27 4
gpt4 key购买 nike

我想知道执行以下操作的最佳方法是什么:

目录“Input.xml”和“Metadata.xml”中有 2 个 XML 文件。

输入.xml:

<Root>
<Header>
<ID>1</ID>
<Name>Test</Name>
</Header>
<Body>
<MetaDataSet>
<ID>23568</ID>
<Value>metadatavalue1</Value>
</MetaDataSet>
</Body>
</Root>

元数据.xml:

<MetaDataSet>
<metadatasetvalue>Test</metadatasetvalue>
<Valid>true</Valid>
</MetaDataSet>

我想做的是能够用文件“Metadata.xml”的全部内容替换“Input.xml”的节点集“MetaDataSet”。所以最终的输出将是:

<Root>
<Header>
<ID>1</ID>
<Name>Test</Name>
</Header>
<Body>
<MetaDataSet>
<metadatasetvalue>Test</metadatasetvalue>
<Valid>true</Valid>
</MetaDataSet>
</Body>
</Root>

是否可以在 C# 中用 XmlDocument 替换节点集?

最佳答案

可以在两个XmlDocument中读取两个Xml文件上课,请调用SelectSingleNode然后替换 InnerXml找到的元素与 OuterXml元的 DocumentElement ,像这样:

var i = @"
<Root>
<Header>
<ID>1</ID>
<Name>Test</Name>
</Header>
<Body>
<MetaDataSet>
<ID>23568</ID>
<Value>metadatavalue1</Value>
</MetaDataSet>
</Body>
</Root>";

var m = @"
<MetaDataSet>
<metadatasetvalue>Test</metadatasetvalue>
<Valid>true</Valid>
</MetaDataSet>
";
var input2 = new XmlDocument();
input2.Load(new StringReader(i));

var meta2 = new XmlDocument();
meta2.Load(new StringReader(m));

var body2 = input2.DocumentElement["Body"];
body2.InnerXml = meta2.DocumentElement.OuterXml;

// helper to show the result
sb = new StringBuilder();
using(var xw = XmlWriter.Create(sb)) {
input2.Save(xw);
}
sb.Dump("2");

如果您愿意更改为XDocument你可以使用的类 ReplaceNodes在一个元素上:

  var inDoc = XDocument.Parse(i);
var metaDoc = XDocument.Parse(m);
var body = inDoc.Root.Element("Body");

body.ReplaceNodes(metaDoc.Root);

// helper to show the result
var sb = new StringBuilder();
using(var xw = XmlWriter.Create(sb))
{
inDoc.WriteTo(xw);
}
sb.Dump(); // LinqPad helper

关于c# - 用另一个 XmlDocument 文件替换 XmlDocument 中的节点集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27203989/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com