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

如何用XmlDocument保留实体字符?Unity读取XML换行实体丢失问题

问题解决:XML中
实体替换为换行符

核心原因

XML解析器(比如XmlDocument)会自动将实体
解码为对应的ASCII控制字符——回车符(\r),而非保留字符串形式的"
"。这就是你用Replace("
", ...)找不到目标、控制台也看不到该字符的原因:\r是不可显示的控制字符,不会在控制台直接输出。

解决方案

直接针对解码后的\r字符进行替换,而非原实体字符串:

修改后的代码

// 读取节点文本,此时
已被解析为\r
string text = node.SelectSingleNode("x:textRuns/x:DOMTextRun/x:characters", nsmgr).InnerText;
// 替换\r为Environment.NewLine
text = text.Replace("\r", Environment.NewLine);

兼容\r\n的扩展处理

如果XML中存在
(对应Windows标准换行\r\n),可以同时处理两种换行场景:

text = text.Replace("\r\n", Environment.NewLine)
           .Replace("\r", Environment.NewLine);

验证方法

若要确认\r的存在,可以输出字符的ASCII码:

foreach (char c in text)
{
    Debug.Log($"字符: '{c}' | ASCII码: {(int)c}");
}

回车符\r的ASCII码为13,通过这种方式就能在控制台看到它的踪迹。

内容的提问来源于stack exchange,提问作者Alexis Brouard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:45:27