如何使用XDocument处理xi:include?原XInclude.net已不可用
用XDocument处理XInclude的方案
XDocument本身并没有原生集成XInclude(xi:include)的处理功能,不过可以借助.NET框架里的XmlReader来实现XInclude的解析,再将结果转换为XDocument。
实现步骤
- 配置
XmlReaderSettings,启用XInclude支持 - 使用配置好的
XmlReader加载包含xi:include的XML文件/内容 - 将
XmlReader读取的内容转换为XDocument
代码示例
using System.Xml; using System.Xml.Linq; // 配置XmlReaderSettings var settings = new XmlReaderSettings { EnableXInclude = true, DtdProcessing = DtdProcessing.Parse // 若引用的XML包含DTD,需设置此项 }; // 加载目标XML文件(也可加载字符串形式的XML内容) using var reader = XmlReader.Create("your-document.xml", settings); XDocument doc = XDocument.Load(reader); // doc即为解析完xi:include后的完整文档 Console.WriteLine(doc.ToString());
注意事项
- 确认
xi:include的href路径有效性:相对路径以当前XML文件所在目录为基准,绝对路径直接生效。 - 处理命名空间:确保主文档与引用文档的命名空间无冲突,避免解析后出现结构异常。
- 远程引用处理:若需加载远程URL的XML资源,默认
XmlUrlResolver支持HTTP/HTTPS,但需注意对应权限配置。
替代方案
如果原生方案无法满足复杂需求,可考虑使用维护中的第三方库(如NuGet上的DotNetXmlXInclude),但优先推荐原生XmlReader方案,减少第三方依赖。
内容的提问来源于stack exchange,提问作者MrD at KookerellaLtd
相关产品推荐
相关产品推荐

