C#如何从内存中的字符串创建XmlDocument

星降
发布: 2025-12-23 10:24:02
原创
827人浏览过
可直接用XmlDocument.LoadXml()加载格式良好的XML字符串;需确保有根元素、标签闭合,不支持DTD/外部实体;编码声明被识别但不影响解析;字符串须为.NET string类型,不可手动编码转换;需高级功能时配合XmlReader。

c#如何从内存中的字符串创建xmldocument

可以直接用 XmlDocument.LoadXml() 方法,把字符串内容加载为 XmlDocument 对象。

使用 LoadXml 加载字符串

这是最直接的方式,适用于格式良好(well-formed)的 XML 字符串:

  • 字符串必须是合法的 XML,不能缺少根元素或标签不闭合
  • 不支持 DTD 或外部实体(默认禁止,避免 XXE 攻击)
  • 编码声明(如 <?xml version="1.0" encoding="utf-8"?>)会被识别,但实际解析不依赖它——字符串本身是 UTF-16(.NET string 内部编码)

示例:

string xml = @"<root><item id='1'>Hello</item></root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
登录后复制

处理带 BOM 或编码不一致的字符串

如果 XML 字符串来自文件读取、网络响应等,可能含 UTF-8 BOM 或声明为其他编码(如 encoding="gb2312"),但 .NET 的 string 已是解码后的 Unicode。只要字符串内容本身结构正确,LoadXml 就能正常工作。

⚠️ 注意:不要手动用 Encoding.UTF8.GetBytes() 再转成字符串传入——这会导致乱码。原始 XML 字符串应保持为 .NET string 类型直接传入。

ghiblitattoo
ghiblitattoo

用AI创造独特的吉卜力纹身

ghiblitattoo 175
查看详情 ghiblitattoo

需要验证或自定义解析时用 XmlReader

若需校验 DTD、启用内联 Schema、控制命名空间处理,或想捕获更详细的解析错误,可配合 XmlReader

  • 创建 XmlReaderSettings,设置 DtdProcessing = DtdProcessing.Parse(慎用)、ValidationType = ValidationType.Schema
  • XmlReader.Create(new StringReader(xml), settings) 构造 reader
  • 再调用 doc.Load(reader)

示例(仅启用 DTD 解析):

var settings = new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse };
using var reader = XmlReader.Create(new StringReader(xml), settings);
doc.Load(reader);
登录后复制

异常处理建议

LoadXml() 遇到格式错误会抛出 XmlException,建议捕获并提示具体位置:

try
{
    doc.LoadXml(xml);
}
catch (XmlException ex)
{
    Console.WriteLine($"XML 解析失败,行 {ex.LineNumber},列 {ex.LinePosition}:{ex.Message}");
}
登录后复制

以上就是C#如何从内存中的字符串创建XmlDocument的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号