我有一个XML,其中包含许多特殊符号,如®(HTML编号®)等。和HTML名称,如ã(HTML编号ã)等。
我正在尝试使用Java将这些HTML符号和HTML名称替换为相应的HTML编号。为此,我首先将XML文件转换为字符串,然后使用replaceAll方法作为:
File fn = new File("myxmlfile.xml");
String content = FileUtils.readFileToString(fn);
content = content.replaceAll("®", "®");
FileUtils.writeStringToFile(fn, content);
但这行不通。
谁能告诉如何做到这一点。
谢谢!!!
replaceAll 方法的签名为:
public String replaceAll(String regex, String replacement)
您必须注意您的第一个参数是有效的正则表达式。 Java 模式类描述了 Java 正则表达式中使用的构造。
根据我在模式类描述中看到的内容,我看不出有什么问题:
content = content.replaceAll("®", "®");
你可以试试:
content = content.replaceAll("\p(®)", "®");
看看这是否效果更好。
我不认为\#是一个有效的转义序列。顺便说一句,"®"有什么问题?
如果你想要HTML数字,首先尝试对XML进行转义。
使用 Apache Commons Lang 的 EscapeUtils。
Java可能在处理它时遇到麻烦,所以首先我更喜欢转义Java,然后再转义XML或HTML。
String escapedStr= StringEscapeUtils.escapeJava(yourString);
escapedStr= StringEscapeUtils.escapeXML(yourString);
escapedStr= StringEscapeUtils.escapeHTML(yourString);