4

我正在尝试这个:

<root>
  text: &#27;
</root>

但是解析器说:

org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 12; 
Character reference "&#27" is an invalid XML character.
  at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
  at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
  at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)

那里怎么用?

4

1 回答 1

5

你不能(在 XML 1.0 中)。在 XML 1.1 中,您可以使用的字符范围稍大一些,并且这些字符的表达方式不同,但即便如此,&#27;仍然是“受限”(它是十六进制&#x1B;),据我所知,这意味着它是无效的XML,即使 XML 解析器应该成功处理它。请注意,“空”字符 ( &#x00;) 永远无效。这是一篇关于 XML 中这些字符的 Wiki 文章

您可以尝试将 XML 文档强制为 XML 1.1,看看您的解析器是否会成功处理它.... 将 XML 的第一行设置为:

<?xml version="1.1"?>

事实上,我做到了,它的工作原理:

<?xml version="1.1"?>
<root>&#27;</root>
于 2013-09-04T22:30:11.733 回答