C# 向xml文件添加信息
我有一个XML文件,其中包含大约850个XML节点。像这样:C# 向xml文件添加信息,c#,xml,C#,Xml,我有一个XML文件,其中包含大约850个XML节点。像这样: <NameValueItem> <Text>Test</Text> <Code>Test</Code> </NameValueItem> ........ 849 more 我想在每个节点中添加一个新的子节点。所以我就这样结束了: <NameValueItem> <Text>Test</Text&
<NameValueItem>
<Text>Test</Text>
<Code>Test</Code>
</NameValueItem>
........ 849 more
我想在每个节点中添加一个新的子节点。所以我就这样结束了:
<NameValueItem>
<Text>Test</Text>
<Code>Test</Code>
<Description>TestDescription</Description>
</NameValueItem>
........ 849 more
我尝试了以下方法:
XmlDocument doc = new XmlDocument();
doc.Load(xmlPath);
XmlNodeList nodes = doc.GetElementsByTagName("NameValueItem");
这给了我所有的节点,但从这里开始,我陷入了困境(我想我需要迭代所有节点并附加到每个节点上)有任何示例吗?如果您不想使用适当的类(即XDocument)解析XML,您可以使用Regex找到一个插入标记并插入它的位置:
string s = @"<NameValueItem>
<Text>Test</Text>
<Code>Test</Code>
</NameValueItem>";
string newTag = "<Description>TestDescription</Description>";
string result = Regex.Replace(s, @"(?<=</Code>)", Environment.NewLine + newTag);
但是最好的解决方案是Linq2XML(它比现在不推荐使用的简单XmlDocument要好得多)
你需要一些与下面这个例子类似的东西。在每个节点上,都需要创建一个新元素以添加到其中。我假设
InnerText
属性将获得不同的值,但我只是使用了您的示例
foreach (var rootNode in nodes)
{
XmlElement element = doc.CreateElement("Description");
element.InnerText = "TestDescription";
root.AppendChild(element);
}
您应该能够在XmlNodeList上使用
foreach
循环,并将节点插入到每个XmlNode中:
foreach(XmlNode node in nodes)
{
node.AppendChild(new XmlNode()
{
Name = "Description",
Value = [value to insert]
});
}
这也可以通过使用LINQ到XML的XDocument来实现,例如:
XDocument doc = XDocument.Load(xmlDoc);
var updated = doc.Elements("NameValueItem").Select(n => n.Add(new XElement() { Name = "Description", Value = [newvalue]}));
doc.ReplaceWith(updated);
XDocument doc = XDocument.Load(xmlDoc);
var updated = doc.Elements("NameValueItem").Select(n => n.Add(new XElement() { Name = "Description", Value = [newvalue]}));
doc.ReplaceWith(updated);