You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML节点包含&符号导致解析报错,如何仅转义内容特殊字符不修改标签?

问题本质

你拿到的XML文本在节点内容区域包含未转义的实体字符&,不符合XML语法规范,直接解析会报错。常规全量转义方法会破坏XML标签本身的<、>符号,因此需要定向处理内容区域的非法字符。


方案1:正则定向替换未转义&

通过正则匹配仅替换没有构成合法XML实体的&字符,不会影响XML标签本身的符号:

using System.Text.RegularExpressions;

// 你的非法XML字符串
string rawXml = @"<Data>
    <Name>Test & <  test> </Name>
</Data>";

// 正则匹配未构成合法XML实体的&,替换为转义后的&amp;
string processedXml = Regex.Replace(rawXml, @"&(?!(?:#[0-9]+|#[xX][0-9a-fA-F]+|[a-zA-Z0-9]+);)", "&amp;");

// 此时processedXml可直接传入XML解析器加载

适用场景:确认只有&未转义,无其他非法XML字符的场景,执行效率更高。


方案2:容错解析器自动修复(更推荐)

使用对非规范XML容错性高的解析库(如.NET生态的HtmlAgilityPack),自动识别并修复内容区域的所有非法转义字符,无需手动编写规则:

using HtmlAgilityPack;

string rawXml = @"<Data>
    <Name>Test & <  test> </Name>
</Data>";

HtmlDocument doc = new HtmlDocument();
// 加载非规范XML时自动修复非法字符
doc.LoadXml(rawXml);
// 导出修复后的合法XML字符串
string validXml = doc.DocumentNode.OuterHtml;

优势:无需提前判断非法字符类型,除了&之外,内容中未转义的<、>、引号等也会自动处理,避免后续再次出现解析错误。


内容的提问来源于stack exchange,提问作者Muhammad Faisal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:21:02