Как я могу отключить режим выхода в JSOUP? - PullRequest
1 голос
/ 28 октября 2011

Я использую JSOUP (инструмент Java для XML-файлов) и использую следующий код для чтения URL-адреса, сохраненного в XML-файле.Вот мои коды:

Document d = Jsoup.parse(new File("feed.xml"), null);
Element elementCat = d.getElementsByTag("cat").get(0);
String stringUrl = elementCat.ownText();
System.out.println(stringUrl);

XML-файл ввода выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<root>
<cat>http://www.isna.ir/ISNA/FullNews.aspx?SrvID=Event&Lang=P</cat>
</root>

Моя проблема в том, что вывод программы такой:this: http://www.isna.ir/ISNA/FullNews.aspx?SrvID=Event&Lang=P

Другими словами, он автоматически преобразует «& Lang» в «⟪».Обратите внимание, что это не «" », это просто« & Lang »без точки с запятой.Я хочу отключить кодирование или экранирование и хочу получить необработанные данные.

Как я могу решить эту проблему?

1 Ответ

3 голосов
/ 28 октября 2011

У вас есть кусок XML.В XML есть способ избежать разметки, поскольку иногда вам просто нужен фрагмент текста, содержащий < или атрибут со значением ".Экранирование выполняется с использованием ссылки на символьную сущность, которая начинается с амперсанда, за которым следует код, за которым следует точка с запятой.Вот так: &lt;.Это может представлять <.

Конечно, это оставляет нас с проблемой самого усилителя.Если вам нужен именно амперсанд, а не какой-то другой символьный объект, вам придется его кодировать следующим образом: &amp;.

То, что у вас есть, - это XML, который не является правильно сформированным.& указывает, что вы запускаете ссылку на символьную сущность, но затем она получает Lang.Теперь, может быть, jsoup не составляет большой проблемы из этого.Но это потому, что это для разбора HTML, а не XML.Поскольку HTML немного более мягок, чем XML, я предполагаю, что jsoup просто заменяет то, что требуется, чтобы быть ссылкой на неизвестный символ, чем-то другим.Вероятно, символ nul.

Поэтому убедитесь, что XML правильно сформирован.Если это невозможно, не рассматривайте это как XML, а как HTML.Если вам нужна обработка XML, изучите SAX, StAX, DOM или JAXB.

...