📜  xml节点更新属性值c#(1)

📅  最后修改于: 2023-12-03 15:06:04.971000             🧑  作者: Mango

XML节点更新属性值

在C#程序中,XML文档的处理是非常常见的操作,其中一个重要的操作就是更新XML节点的属性值,本文将介绍如何在C#中实现XML节点的更新。

1. 加载XML文档

首先,我们需要使用XmlDocument类来加载XML文档。假设我们有一个名为example.xml的XML文档,代码如下:

XmlDocument doc = new XmlDocument();
doc.Load("example.xml");
2. 选择要更新的XML节点

我们需要使用XPath表达式来选择要更新的XML节点。XPath表达式可以快速的定位到某个节点。例如,我们要更新下面的例子中的节点book的属性price,可以使用XPath表达式/catalog/book[@id='bk101']来定位该节点:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
  <book id="bk101" language="en">
    <author>Gambardella, Matthew</author>
    <title>XML Developer's Guide</title>
    <genre>Computer</genre>
    <price>44.95</price>
    <publish_date>2000-10-01</publish_date>
    <description>An in-depth look at creating applications 
      with XML.</description>
  </book>
</catalog>

在C#中,我们可以使用SelectSingleNode方法来选中要更新的节点。代码如下:

XmlNode node = doc.SelectSingleNode("/catalog/book[@id='bk101']");
3. 更新XML节点的属性值

要更新XML节点的属性值,我们可以使用节点的Attributes属性来访问所有属性。例如,我们要更新book节点的price属性,可以使用以下代码:

XmlAttribute priceAttribute = node.Attributes["price"];
if (priceAttribute != null)
{
    priceAttribute.Value = "59.99";
}

如果属性不存在,则需要先创建属性并设置值。例如,我们要更新book节点的publisher属性,可以使用以下代码:

XmlAttribute publisherAttribute = node.Attributes["publisher"];
if (publisherAttribute == null)
{
    publisherAttribute = doc.CreateAttribute("publisher");
    node.Attributes.Append(publisherAttribute);
}
publisherAttribute.Value = "ABC Company";

最后,保存XML文档。

doc.Save("example.xml");

以上就是在C#中更新XML节点属性值的完整代码:

XmlDocument doc = new XmlDocument();
doc.Load("example.xml");

XmlNode node = doc.SelectSingleNode("/catalog/book[@id='bk101']");

XmlAttribute priceAttribute = node.Attributes["price"];
if (priceAttribute != null)
{
    priceAttribute.Value = "59.99";
}

XmlAttribute publisherAttribute = node.Attributes["publisher"];
if (publisherAttribute == null)
{
    publisherAttribute = doc.CreateAttribute("publisher");
    node.Attributes.Append(publisherAttribute);
}
publisherAttribute.Value = "ABC Company";

doc.Save("example.xml");