Преобразование символов HTML и имен HTML в номер HTML с использованием Java - PullRequest
0 голосов
/ 20 мая 2011

У меня есть XML, который содержит много специальных символов, таких как ® (номер HTML & # 174) и т. Д. и имена HTML, такие как & atilde (номер HTML & # 227) и т. д.

Я пытаюсь заменить эти символы HTML и имена HTML соответствующими номерами HTML, используя Java. Для этого я сначала преобразовал XML-файл в строку, а затем использовал метод replaceAll как:

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

Но это не работает.

Может кто-нибудь подсказать, как это сделать.

Спасибо !!!

Ответы [ 3 ]

2 голосов
/ 20 мая 2011

Подпись для метода replaceAll:

public String replaceAll(String regex, String replacement)

Вы должны быть осторожны, чтобы ваш первый параметр был допустимым регулярным выражением.Класс Java Pattern описывает конструкции, используемые в регулярном выражении Java.

Основываясь на том, что я вижу в описании класса Pattern, я не вижу, что не так с:

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

Вы можете попробовать:

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

и посмотреть, будет ли это работать лучше.

1 голос
/ 20 мая 2011

Я не думаю, что \ # является допустимой escape-последовательностью.Кстати, что не так с "®"?

0 голосов
/ 28 марта 2012

Если вам нужны числа HTML, попробуйте сначала перейти на XML.

Использовать EscapeUtils от Apache Commons Lang .

Java может иметь проблемы с этим, поэтому сначала япредпочтительнее избегать Java, а затем XML или HTML.

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