java - 仅转义 XML 实体一次

标签 java xml apache html-entities

我在字符串中有以下 XML 片段(注意双重编码的 &):

...
<PARA>
S&P
</PARA>
...

我想要的输出是:

> ... <PARA> S&amp;P </PARA> ...

如果我使用:

StringEscapeUtils.unescapeXml()

实际输出是:

 > ... <PARA> S&P </PARA> ...

看来 StringEscapeUtils.unescapeXml() 会转义输入两次,或者只要它包含实体。

有没有更好的实用方法,或者简单的解决方案,可以一次转义每个 xml 实体(不仅仅是几个,而是所有重音字符),这样我的编码 & 部分就不会搞砸?

谢谢, 彼得

最佳答案

当您使用第三方库时,应包含库名称和版本。

StringEscapeUtils是 Apache Commons Text 和 Apache Commons Lang(已弃用)的一部分。最新版本(截至 2017 年 11 月)是 Commons Text 1.1 和 Commons Lang 3.3.7。两个版本都显示正确的结果。

import org.apache.commons.text.StringEscapeUtils;
public class EscapeTest {
  public static void main(String[] args) {
    final String s = "&lt;PARA&gt; S&amp;amp;P &lt;/PARA&gt;";
    System.out.println(StringEscapeUtils.unescapeXml(s));
  }
}

输出:<PARA> S&amp;P </PARA>

关于java - 仅转义 XML 实体一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47328111/

相关文章:

java - JSTL 数字格式 : How to construct this pattern?

java - 如何解决错误 'nexpected element (uri:"“,本地 :"Create"”。预期元素是 <{}Create>'?

Java:从 jdk.* 导入是否安全?

javascript - 将 XML 数据解析为 Chart.js 折线图

xml - 自 JRE6 更新 24 以来,javax.xml.validation.Validator 非常慢?

java - Guava 中有 Empty 吗?

java - 我在方法中得到了正确的反转字符串,但是当我返回到 main() 时,它显示错误的字符串作为输出

xml - Postgresql xpath 搜索属性和元素组合

apache - webhost中的tomcat域名

java - Apache Tomcat 随机 session 数生成器问题 Ubuntu