可直接用XmlDocument.LoadXml()加载格式良好的XML字符串;需确保有根元素、标签闭合,不支持DTD/外部实体;编码声明被识别但不影响解析;字符串须为.NET string类型,不可手动编码转换;需高级功能时配合XmlReader。

可以直接用 XmlDocument.LoadXml() 方法,把字符串内容加载为 XmlDocument 对象。
这是最直接的方式,适用于格式良好(well-formed)的 XML 字符串:
<?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);
如果 XML 字符串来自文件读取、网络响应等,可能含 UTF-8 BOM 或声明为其他编码(如 encoding="gb2312"),但 .NET 的 string 已是解码后的 Unicode。只要字符串内容本身结构正确,LoadXml 就能正常工作。
⚠️ 注意:不要手动用 Encoding.UTF8.GetBytes() 再转成字符串传入——这会导致乱码。原始 XML 字符串应保持为 .NET string 类型直接传入。
若需校验 DTD、启用内联 Schema、控制命名空间处理,或想捕获更详细的解析错误,可配合 XmlReader:
XmlReaderSettings,设置 DtdProcessing = DtdProcessing.Parse(慎用)、ValidationType = ValidationType.Schema 等XmlReader.Create(new StringReader(xml), settings) 构造 readerdoc.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中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号