Используйте jsoup для разбора XML - не позволяйте jsoup «чистить» теги <link> - PullRequest
15 голосов
/ 17 июля 2011

В большинстве случаев у меня нет проблем с использованием jsoup для разбора XML. Однако, если в XML-документе есть теги <link>, jsoup изменит <link>some text here</link> на <link />some text here. Это делает невозможным извлечение текста внутри тега <link> с помощью селектора CSS.

Так как же запретить jsoup "чистить" <link> теги?

Ответы [ 3 ]

35 голосов
/ 15 апреля 2012

В jsoup 1.6.2 Я добавил режим синтаксического анализатора XML, который анализирует ввод как есть, без применения правил синтаксического анализа HTML5 (содержимое элемента, структура документа и т. Д.). Этот режим сохранит текст в теге <link>, допустит его кратное и т. Д.

Вот пример:

String xml = "<link>One</link><link>Two</link>";
Document xmlDoc = Jsoup.parse(xml, "", Parser.xmlParser());

Elements links = xmlDoc.select("link");
System.out.println("Link text 1: " + links.get(0).text());
System.out.println("Link text 2: " + links.get(1).text());

Возвращает:

Link text 1: One
Link text 2: Two
1 голос
/ 28 декабря 2011

Не хранить текст внутри элемента <link> - он недействителен. Если вам нужна дополнительная информация, храните ее в атрибутах HTML5 data-*. Я уверен, что jsoup не будет касаться этого.

<link rel="..." data-city="Warsaw" />
0 голосов
/ 20 октября 2011

Для этого может быть обходной путь.Перед передачей XML в jsoup.Преобразуйте XML-файл, чтобы заменить все на какой-нибудь фиктивный тег, который вы хотите сказать.

...