好的,阿杰,我们来系统梳理一下 C# 操作 XML 文件的基础方法,重点讲 XmlDocument
、XmlElement
、XmlNode
的使用。我们一步步讲,并附带示例。
1. XmlDocument
XmlDocument
是 C# 中操作 XML 的核心类,相当于 内存中的 XML DOM。
常用操作
- 加载 XML
XmlDocument doc = new XmlDocument();
doc.Load("books.xml"); // 从文件加载
// doc.LoadXml("<books>...</books>"); // 从字符串加载
- 保存 XML
doc.Save("books_new.xml");
- 获取根节点
XmlNode root = doc.DocumentElement;
Console.WriteLine(root.Name); // 输出根节点名称
2. XmlNode
XmlNode
是 XML 中的 节点抽象,可以是元素、属性、文本等。常用方法:
- 选择节点
XmlNode node = doc.SelectSingleNode("/books/book[1]");
- 遍历子节点
foreach (XmlNode child in root.ChildNodes)
{
Console.WriteLine(child.Name + ": " + child.InnerText);
}
- 获取或修改值
XmlNode firstBook = root.FirstChild;
Console.WriteLine(firstBook.InnerText);
firstBook.InnerText = "新的内容";
3. XmlElement
XmlElement
是 元素节点,继承自 XmlNode
。可以操作元素本身和属性。
常用操作
- 创建新元素
XmlElement newBook = doc.CreateElement("book");
newBook.InnerText = "C# 入门教程";
- 添加属性
newBook.SetAttribute("id", "001");
- 添加到 XML 中
root.AppendChild(newBook);
- 获取属性
string id = newBook.GetAttribute("id");
Console.WriteLine(id); // 输出 001
4. 常用组合操作示例
假设 XML 文件 books.xml
:
<books>
<book id="001">C# 入门</book>
<book id="002">Java 基础</book>
</books>
添加新节点
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");
XmlElement newBook = doc.CreateElement("book");
newBook.SetAttribute("id", "003");
newBook.InnerText = "Python 数据分析";
doc.DocumentElement.AppendChild(newBook);
doc.Save("books.xml");
修改节点内容
XmlNode bookNode = doc.SelectSingleNode("/books/book[@id='001']");
if(bookNode != null)
{
bookNode.InnerText = "C# 高级教程";
}
doc.Save("books.xml");
删除节点
XmlNode bookNode = doc.SelectSingleNode("/books/book[@id='002']");
if(bookNode != null)
{
doc.DocumentElement.RemoveChild(bookNode);
}
doc.Save("books.xml");
5. 小技巧
- XPath 查询:
SelectSingleNode
或SelectNodes
可以快速定位节点 - 遍历节点:
ChildNodes
、ParentNode
、NextSibling
等 - 元素 vs 节点:
XmlElement
专注于元素,XmlNode
更通用(文本、注释、属性)
💡 总结关系:
XmlDocument -> 整个 XML 文档
└─ XmlNode -> XML 中的节点(元素、文本、属性等)
└─ XmlElement -> 元素节点(XmlNode 子类)
发表回复