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 更通用(文本、注释、属性)
💡 总结关系: