如何在XML中使用ESC(?)字符?

时间:2013-09-04 21:59:23

标签: java xml dom escaping sax

我正在尝试这个:

<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)

如何在那里使用?

1 个答案:

答案 0 :(得分:3)

你不能( in XML 1.0)。在XML 1.1中,您可以使用更大范围的字符和characters are expressed differently,但即便如此,&#27;也是“受限制的”(十六进制为&#x1B;),到目前为止正如我所知,这意味着它不是有效的XML,即使XML解析器应该成功处理它。请注意,'null'字符(&#x00;)永远不会有效。这是一个Wiki article on these characters in XML

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

<?xml version="1.1"?>

事实上,我这样做了,它的确有效:

<?xml version="1.1"?>
<root>&#27;</root>