XmlDocument提供DOM模型的XML读写改及命名空间处理能力:支持Load/Save文件、XPath查询、节点增删改、命名空间管理,并需注意异常捕获与编码适配。

如果您需要在.NET Core应用程序中处理XML数据,System.Xml.XmlDocument类提供了基于DOM模型的XML文档操作能力。以下是使用XmlDocument进行XML文件读写的具体方法:
一、使用XmlDocument读取XML文件
XmlDocument通过加载XML文件或字符串构建内存中的树状结构,允许随机访问任意节点。该方式适用于需要频繁查询、修改节点的场景。
1、创建XmlDocument实例并调用Load方法传入XML文件路径。
2、使用GetElementsByTagName方法按标签名获取XmlNodeList集合。
3、遍历XmlNodeList,通过FirstChild.InnerText或Attributes.GetNamedItem获取节点文本值或属性值。
4、对特定XmlNode调用SelectSingleNode配合XPath表达式精确定位子节点。
二、使用XmlDocument写入XML文件
XmlDocument支持动态创建元素、设置属性及追加子节点,最终通过Save方法将整个文档持久化到磁盘。该方式适用于生成结构明确的XML输出。
1、创建XmlDocument实例并调用CreateXmlDeclaration方法添加XML声明节点。
2、调用CreateElement创建根元素,并使用AppendChild将其加入文档。
3、对每个子元素重复调用CreateElement和CreateAttribute,再通过SetAttributeNode或SetAttribute设置属性值。
4、使用AppendChild将子元素添加至父元素,最后调用Save方法传入文件路径保存文档。
三、使用XmlDocument修改现有XML内容
XmlDocument允许在已加载的文档中定位、更新、插入或删除节点。所有变更均在内存中完成,需显式调用Save才能写入磁盘。
1、使用Load加载目标XML文件。
2、通过GetElementById或SelectSingleNode定位待修改节点。
GNU makefile中文手册 pdf,文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。同时重点讨论如何为一个工程编写Makefile。阅读本书之前,读者应该对GNU的工具链和Linux的一些常用编程工具有一定的了解。诸如:gcc、as、ar、ld、yacc等本文比较完整的讲述GNU make工具,涵盖GNU make的用法、语法。重点讨论如何使用make来管理软件工程、以及如何为工程编写正确的Makefile。 本手册不是一个纯粹的语言翻译版本,其中对GNU make的一些语法
3、调用InnerText属性直接替换节点文本内容。
4、调用Attributes.SetNamedItem更新指定属性值,或使用RemoveAll清除全部属性后重新添加。
5、调用ReplaceChild替换整段子树结构。
四、处理命名空间的XML读写
当XML包含命名空间(xmlns)时,必须使用XmlNamespaceManager注册前缀与URI映射,否则XPath查询将无法匹配节点。
1、加载文档后创建XmlNamespaceManager实例,并调用AddNamespace传入前缀和URI。
2、在SelectSingleNode或SelectNodes中使用带前缀的XPath表达式,如"//ns:book/ns:title"。
3、创建新元素时调用CreateElement传入前缀、本地名和命名空间URI三个参数。
4、保存前确保XmlDocument.DocumentElement的xmlns属性已正确设置为对应URI。
五、异常处理与编码注意事项
XmlDocument在解析非法格式XML时会抛出XmlException,且默认使用UTF-8编码读写文件。若源文件含BOM或特殊编码,需手动处理流以避免乱码。
1、使用FileStream配合StreamReader指定编码打开文件,再将StreamReader传递给Load方法。
2、在try-catch块中包裹Load和Save调用,捕获XmlException并检查InnerException获取详细错误位置。
3、调用Save时若目标目录不存在,需提前调用Directory.CreateDirectory确保路径有效。
4、对用户输入的XML内容执行Load前,应先验证其是否为良构XML,可借助XmlReader.Create配合XmlReaderSettings.DtdProcessing = DtdProcessing.Ignore提升安全性。









