【问题标题】:StAX escaping of greater than (>)StAX 转义大于 (>)
【发布时间】:2012-01-18 14:37:56
【问题描述】:

我正在使用来自http://stax.codehaus.org/ 的 vrsion 1.2.0 中的 StAX Streaming Api。 当我尝试将以下 xml 写入文件时,大于 char 不会被转义。然而小于似乎没有逃逸的问题。

out = new FileOutputStream("foo.xml");
XMLOutputFactory factory = XMLOutputFactory.newInstance();
XMLStreamWriter writer = factory.createXMLStreamWriter(out);
writer.writeStartDocument();
writer.writeStartElement("foo");
writer.writeAttribute("test", "<foo>");
writer.writeEndElement();
writer.writeEndDocument();
writer.flush();
writer.close();
out.close();

输出(仅相关)是这样的:

<foo test="&lt;foo>"

我也尝试使用 writeCharacters 方法 - 结果相同。这是错误还是意图?有什么解决方法吗? (替换>手动

replaceAll(">", "&gt;");

导致 '&' 自行转义。

提前感谢您的帮助。

【问题讨论】:

    标签: java xml stax


    【解决方案1】:

    基本上,这是因为您不需要逃避&gt;。它已经在做正确的事情了。

    【讨论】:

    • 只是对link 等来源感到好奇,他说“writeCharacters(...) 方法用于转义 &、 和“。”等字符。
    • @elyan:说实话,我怀疑这只是过分热心的文档。也许在某一时刻它确实(不必要地)逃脱了&gt;,但现在它没有。
    • @elyan:我刚刚检查了规范,有一种情况确实需要转义:“可以表示右尖括号 (>)使用字符串 " > ",并且为了兼容性,必须使用 " > 进行转义。 " 或出现在内容中的字符串 " ]]> " 中的字符引用,当该字符串未标记 CDATA 部分的结尾时。"
    猜你喜欢
    • 2015-10-26
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2013-05-24
    • 2016-03-12
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    相关资源
    最近更新 更多