如何在XML中使用替代字符(^ Z)?

时间:2018-08-23 14:00:37

标签: xml xml-parsing

如何在XML中使用ASCII 26?

当我使用时,得到的字符引用是无效的XML字符。

2 个答案:

答案 0 :(得分:2)

您不知道。

十进制260x1A又名^Z又名SUB又名替代)是 不是{{3} }

[2] Char ::= #x9|#xA|#xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

因此,您的数据不是XML,任何兼容的XML处理器都必须报告错误,例如您收到的错误。

在与任何XML库一起使用之前,必须通过手动或自动将数据视为 文本而非XML 来删除任何非法字符来修复数据。

答案 1 :(得分:0)

ASCII 26是所谓的substitute character。在Unicode中,它是represented as U+001a

尝试:

<?xml version=\"1.0\" encoding=\"UTF-8\"?><Test>&#26;</Test>

您可以使用以下C#进行验证

var xmlDocument = new XmlDocument();
xmlDocument.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Test>&#26;</Test>");

var substituteCharacter = xmlDocument.SelectSingleNode("//Test").InnerText;
// substituteCharacter is "\u001a"

xmlDocument.LoadXml("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Test>&#x1A;</Test>");