2011-05-20 45 views
0

我有一个XML,其中包含许多特殊符号,如®(HTML编号&#174)等 和HTML名称,如& atilde(HTML编号&#227)等使用Java将HTML符号和HTML名称转换为HTML数字

我想用相应的HTML编号替换这些HTML符号和HTML名称。对于这一点,我先转换XML文件的字符串,然后使用的replaceAll方法:

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

但是,这是行不通的。

任何人都可以请告诉如何做到这一点。

谢谢!

+1

什么不工作?粘贴错误/异常(如果有的话)。 – asgs 2011-05-20 12:53:32

+0

此代码未用HTML编号替换符号。但现在我将这个XML文件转换为文档,然后通过获取文档的文本内容进行替换。因此,它现在正在工作。 – Piyush 2011-05-20 13:28:11

回答

2

的方法的replaceAll的签名是:

public String replaceAll(String regex, String replacement) 

你要小心,你的第一个参数是一个有效的正则表达式。 Java类Pattern类描述Java正则表达式中使用的构造。

根据我的模式类的描述看,我看不出有什么不对:

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

你可以尝试:

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

,看看是否能更好地工作。

+0

感谢您的解决方案,但我的问题解决了将XML转换为文档,然后执行替换。 – Piyush 2011-05-20 13:31:39

1

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

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);