在C#开发中,处理XML格式的数据是常见需求,当XML内容以字符串形式存在时,使用XmlDocument类的LoadXML方法可以快速将其解析为可操作的XML文档对象,方便后续进行节点查询、内容修改等操作。
LoadXML方法基础用法
XmlDocument类位于System.Xml命名空间下,使用前需要先引入该命名空间。LoadXML方法接收一个符合XML格式的字符串作为参数,执行成功后会将该字符串解析为XmlDocument的内部节点结构。
基础使用示例如下:
using System;
using System.Xml;
namespace XmlLoadDemo
{
class Program
{
static void Main(string[] args)
{
// 定义XML格式的字符串
string xmlString = "<?xml version="1.0" encoding="utf-8"?><root><user id="1"><name>张三</name><age>25</age></user></root>";
XmlDocument xmlDoc = new XmlDocument();
try
{
// 调用LoadXML方法加载XML字符串
xmlDoc.LoadXml(xmlString);
Console.WriteLine("XML字符串加载成功");
// 获取user节点下的name节点内容
XmlNode nameNode = xmlDoc.SelectSingleNode("/root/user/name");
if (nameNode != null)
{
Console.WriteLine("用户姓名:" + nameNode.InnerText);
}
}
catch (XmlException ex)
{
Console.WriteLine("XML加载失败:" + ex.Message);
}
}
}
}
常见使用注意事项
XML字符串格式要求
LoadXML方法要求传入的字符串必须是格式合法的XML,否则会抛出XmlException异常。合法的XML需要满足以下基本条件:
- 必须有且仅有一个根节点
- 标签必须正确闭合,属性值需要用双引号包裹
- 特殊字符如<、>、&等需要进行转义,或者使用CDATA段包裹
特殊字符处理
如果XML字符串中包含未转义的特殊字符,会导致加载失败。例如字符串中包含<符号但没有作为标签的一部分,就需要转义为<,或者将包含特殊字符的内容放在CDATA段中:
using System;
using System.Xml;
namespace XmlLoadDemo
{
class Program
{
static void Main(string[] args)
{
// 包含CDATA段的XML字符串,避免特殊字符转义问题
string xmlString = "<?xml version="1.0" encoding="utf-8"?><root><content><![CDATA[这里包含特殊字符<>&]]></content></root>";
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.LoadXml(xmlString);
XmlNode contentNode = xmlDoc.SelectSingleNode("/root/content");
Console.WriteLine("内容:" + contentNode.InnerText);
}
catch (XmlException ex)
{
Console.WriteLine("加载失败:" + ex.Message);
}
}
}
}
编码问题处理
如果XML字符串中包含中文等非ASCII字符,需要确保XML声明中的编码和实际字符串的编码一致,通常建议使用UTF-8编码,避免加载后出现乱码问题。
LoadXML与Load方法的区别
很多开发者会混淆LoadXML和Load方法,两者的核心区别如下:
| 方法名 | 参数类型 | 适用场景 |
|---|---|---|
| LoadXML | string(XML字符串) | XML内容已经以字符串形式存在时使用 |
| Load | string(文件路径或URL) | XML内容存储在本地文件或远程地址时使用 |
异常处理建议
实际开发中调用LoadXML方法时,一定要添加异常处理逻辑,捕获XmlException异常,方便快速定位XML格式错误的问题。如果是从外部获取的XML字符串,建议先做基本的格式校验再调用加载方法,减少异常出现的概率。
C#XmlDocumentLoadXMLXML字符串修改时间:2026-06-22 08:09:50