.NET Core中如何读写XML文件 System.Xml.XmlDocument用法

1次阅读

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

.NET Core中如何读写XML文件 System.Xml.XmlDocument用法

如果您需要在.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定位待修改节点。

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提升安全性。

text=ZqhQzanResources