org.xml.sax.SAXParseException: ссылка на символ должна заканчиваться символом ';' разделитель. Требуется обходной путь - PullRequest
0 голосов
/ 25 июня 2009

Я пытаюсь использовать DOM Parser в Java для разбора небольшого XML-файла. Я извлекаю сеть из его URI, но получаю сообщение об ошибке с пропуском точки с запятой.

Вот ссылка 108:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("url_to_the_xml_file.xml");

Вот ошибка:

[Fatal Error] A01.xml:6:53: The character reference must end with the ';' delimiter.
Exception in thread "main" org.xml.sax.SAXParseException: The character reference must end with the ';' delimiter.
  at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
  at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
  at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180)
  at Parser.Parse(Parser.java:108)
  at Parser.main(Parser.java:185)

парсинг этой строки XML

<title>Reduction Algorithm using the &#192 TROUS Wavelet Transform.</title>

Очевидно, что пропущена точка с запятой. Кто-нибудь знает какие-нибудь приятные и аккуратные способы решения этой проблемы?

Ответы [ 3 ]

1 голос
/ 04 сентября 2010

Используйте

"?default=sample&amp;page=homePage"
1 голос
/ 25 июня 2009

Я бы извлек XML отдельно в байтовый массив / строку и выполнил бы замену регулярного выражения в искаженном объекте, прежде чем отправить его в анализатор.

Я не эксперт по регулярным выражениям, но поиск & # d {1,4} [^;] может сделать половину уловки.

Если у вас есть только эта сущность уродливая, вы можете просто String.replaceAll("&#192", "&#192;");

0 голосов
/ 27 октября 2009

Если у вас больше проблем с синтаксисом XML, чем более, более полное решение состоит в использовании HTMLTidy или его порта Java, JTidy , для очистки разметки перед ее передачей в анализатор. Первоначально он был разработан для HTML / XHTML, но я вполне уверен, что он способен привести в порядок произвольный XML, если заданы правильные настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...