使用Java将HTML符号和HTML名称转换为HTML编号

时间:2011-05-20 12:34:09

标签: java xml htmlspecialchars

我有一个XML,其中包含许多特殊符号,如®(HTML编号和#174)等。 和HTML名称,如& atilde(HTMLnumberã)等。

我正在尝试使用Java将这些HTML符号和HTML名称替换为相应的HTML编号。为此,我首先将XML文件转换为字符串,然后将replaceAll方法用作:

File fn = new File("myxmlfile.xml");
String content = FileUtils.readFileToString(fn);
content = content.replaceAll("®", "&\#174");
FileUtils.writeStringToFile(fn, content);

但这不起作用。

任何人都可以告诉你该怎么做。

谢谢!!!

3 个答案:

答案 0 :(得分:2)

replaceAll方法的签名是:

public String replaceAll(String regex, String replacement)

您必须注意第一个参数是有效的正则表达式。 Java Pattern类描述了Java正则表达式中使用的构造。

根据我在Pattern类描述中看到的内容,我看不出有什么问题:

content = content.replaceAll("®", "&\#174");

你可以尝试:

content = content.replaceAll("\\p(®)", "&\#174");

看看它是否更好。

答案 1 :(得分:1)

我不认为\#是一个有效的转义序列。 顺便说一句,“&#174”有什么问题?

答案 2 :(得分:0)

如果您想要HTML数字,请先尝试转义XML。

使用EscapeUtils from Apache Commons Lang

Java可能无法处理它,所以首先我优先逃避Java,然后再使用XML或HTML。

    String escapedStr= StringEscapeUtils.escapeJava(yourString);
    escapedStr= StringEscapeUtils.escapeXML(yourString);
    escapedStr= StringEscapeUtils.escapeHTML(yourString);