0

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

我正在尝试使用 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);

但这不起作用。

谁能告诉我该怎么做。

谢谢 !!!

4

3 回答 3

2

replaceAll 方法的签名是:

public String replaceAll(String regex, String replacement)

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

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

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

你可以试试:

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

看看是否效果更好。

于 2011-05-20T12:54:41.303 回答
1

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

于 2011-05-20T13:19:16.063 回答
0

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

使用来自 Apache Commons Lang 的 EscapeUtils

Java 可能很难处理它,所以首先我更喜欢转义 Java,然后是 XML 或 HTML。

    String escapedStr= StringEscapeUtils.escapeJava(yourString);
    escapedStr= StringEscapeUtils.escapeXML(yourString);
    escapedStr= StringEscapeUtils.escapeHTML(yourString);
于 2012-03-28T08:53:38.847 回答