Як я можу вимкнути режим виходу в JSOUP?

Я використовую 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"?>

http://www.isna.ir/ISNA/FullNews.aspx?SrvID=Event&Lang=P

my problem is that the output of program is this: http://www.isna.ir/ISNA/FullNews.aspx?SrvID=Event⟪=P instead of this: http://www.isna.ir/ISNA/FullNews.aspx?SrvID=Event&Lang=P

In other words, it converts "&Lang" to "⟪" automatically. Please pay attention that it is not "⟪", it's just "&Lang" without semicolon. I want to disable encoding or escaping and I want the raw data.

Як я можу вирішити цю проблему?

1
Я думаю, ти правий. Але JSOUP має також потужні функції для роботи з XML, і я не хочу, щоб їх використовувати.
додано Автор Soheil, джерело
Чи не jsoup тільки для HTML замість XML?
додано Автор G_H, джерело

1 Відповіді

You've got a piece of XML. In XML, there's a manner of escaping markup, since sometimes you just need a piece of text containing < or an attribute with " in its value. Escaping is done using a character entity reference, which starts with an ampersand, followed by a code, followed by a semi-colon. Like so: <. That can represent <.

Звичайно, це залишає нам проблему амперметрів і себе. Якщо це насправді потрібний вам амперсанд, а не якийсь інший об'єкт символу, вам доведеться кодувати його таким чином: & amp; .

What you've got there is xml that isn't well-formed. The & indicates you're starting a character entity reference, but then it gets Lang. Now, maybe jsoup doesn't make much of a problem of this. But that's because it's for HTML parsing and not XML. Since HTML is a bit more lenient than XML, I suppose jsoup simply subtitutes what it takes to be an unknown character reference with something else. Likely a nul character.

Тому переконайтеся, що xml добре сформований. Якщо це не може бути зроблено, не розглядайте його як XML, а як HTML. Якщо обробка xml є тим, що ви після цього, перегляньте SAX, StAX, DOM або JAXB.

3
додано
Уорай, я вирішив це. Ти правий. Мій XML-файл не добре сформований. Я змінив isna.ir/ISNA/FullNews.aspx?SrvID=Event&Lang= P , за умови isna.ir/ISNA/FullNews. aspx? SrvID = Подія & Lang = P , і це працює.
додано Автор Soheil, джерело
Поки ви можете переконатися, що ви отримали добре сформований xml як вхід, я думаю, ви досить безпечно, використовуючи jsoup.
додано Автор G_H, джерело
ІТ КПІ - Java
ІТ КПІ - Java
436 учасників