在C#中进行XML的简单读写操作是处理配置文件、数据交换等场景时非常实用的技能。XML(可扩展标记语言)是一种用于存储和传输数据的格式,它以一种结构化的方式组织数据,便于机器解析和人类阅读。C#提供了多种方法来读取和修改XML文档,其中使用`XmlDocument`类是最常见且直观的方法之一。
### C#中的`XmlDocument`类
`XmlDocument`类是.NET Framework中的一个关键组件,用于表示整个XML文档。它可以加载XML文档,并提供了一系列的方法和属性来访问、修改和保存XML文档。
#### 加载XML文档
如代码示例所示,通过`System.Environment.CurrentDirectory`获取当前目录的路径,然后连接上XML文件的名称,得到完整的文件路径。接着,实例化一个`XmlDocument`对象并调用其`Load`方法来加载指定路径下的XML文件。`Load`方法会将XML文件的内容解析到`XmlDocument`对象中,使得后续可以对文档进行查询和修改。
```csharp
string pathxml = System.Environment.CurrentDirectory + "\\printConfig.xml";
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(pathxml);
```
#### 查询XML节点
`XmlDocument`提供了多种方法来查询XML文档中的节点,其中`SelectSingleNode`和`SelectNodes`是非常常用的两个方法。`SelectSingleNode`用于根据XPath表达式返回单个节点,而`SelectNodes`则返回一个节点集合。在示例中,通过`SelectSingleNode`定位到了名为“Info”的节点,然后进一步获取其子节点集合。
```csharp
XmlNodeList nodelist = xmldoc.SelectSingleNode("Info").ChildNodes;
```
#### 修改XML节点
遍历`XmlNodeList`可以访问每个子节点,并检查其类型是否为`XmlElement`,然后根据元素的名称修改其文本内容。在这个例子中,根据元素名“print1”和“print2”,分别更新了它们的内部文本值。这通常用于动态地更新配置文件中的某些参数。
```csharp
foreach (XmlNode xn in nodelist)
{
XmlElement xe = (XmlElement)xn;
if (xe.Name == "print1")
{
xe.InnerText = cbxPos1.Text;
}
if (xe.Name == "print2")
{
xe.InnerText = cbxA41.Text;
}
}
```
#### 保存XML文档
修改完成后,调用`XmlDocument`的`Save`方法将更改保存回原始文件或新的文件位置。`Save`方法接受一个字符串参数,表示要保存的文件路径。
```csharp
xmldoc.Save(pathxml);
```
### 总结
通过上述步骤,我们可以看到如何使用C#中的`XmlDocument`类来简单地读取、修改和保存XML文档。这种能力在开发中十分常见,尤其是在处理配置文件、数据持久化或与支持XML的数据交换格式的应用交互时。掌握这些基本操作,将有助于开发者更加高效地处理各种基于XML的任务。