有没有办法让 XmlReader 将字符引用保留为文本而不是转换它?
Posted
技术标签:
【中文标题】有没有办法让 XmlReader 将字符引用保留为文本而不是转换它?【英文标题】:Is there a way to have an XmlReader preserve a character reference as text rather than converting it? 【发布时间】:2020-07-11 21:32:10 【问题描述】:我正在使用 xml 阅读器来解析一些 xml,我想知道是否可以让它在字符实体引用中作为纯文本读取,而不是将其转换为实际字符。因此,如果我在节点上调用 ReadInnerXml():
<param name="id">don't convert this</param>
我会得到“don&apos;
t convert this”,而不是我目前得到的“don't convert this”。这是必要的,因为任何字符或字符实体引用都应按原样返回,因为它们是遗留内容。
任何帮助表示赞赏!
【问题讨论】:
ReadInnerXml() 是我正在使用的,但它会自动将引用转换为字符。我希望 XmlReaderSettings 中可能有一些东西,但目前没有找到任何东西。 您不能在 xml 文件中发送撇号,因此您必须转换为 '见维基:en.wikipedia.org/wiki/Character_encodings_in_html @jdweng 这完全不正确。 XML 中的文字撇号不需要转义,并且在任何情况下&apos;
都不能作为内置实体使用。您的参考是 HTML,而不是 XML。
@Michael Kay:阅读链接:“XML 字符引用”
好吧,我错了一半(但你完全错了)。 &apos;
在 XML 中始终可用,但从不需要它,因为普通的撇号字符在所有上下文中都有效,除了由撇号分隔的属性值(这种情况很少见且可以避免)。
【参考方案1】:
不,我不知道任何具有此功能的 XML 解析器。 XML 解析器的工作是解析输入,这就是它要做的事情。
如果您无法修复此过程的使用者以正确处理 XML,则最好的办法是通过将 &
替换为(例如)§
来预处理文本,因此这对XML 解析器。
【讨论】:
这就是我的想法,不幸的是,就改变流程而言,无法绕过它,谢谢!以上是关于有没有办法让 XmlReader 将字符引用保留为文本而不是转换它?的主要内容,如果未能解决你的问题,请参考以下文章
XmlReader - 如何在没有 System.OutOfMemoryException 的情况下读取元素中很长的字符串
错误 CS0012 类型“XmlReader”在未引用的程序集中定义
有没有办法让 PHP 将 sql 结果直接转换为 JSON?