我有一个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);
但这不起作用。
任何人都可以告诉你该怎么做。
谢谢!!!
答案 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);