Как написать символ амперсанда в Jsoup

Я использую Jsoup для анализа и изменения HTML. В некоторых местах я хочу добавить в HTML неразрывный пробел (). Я предположил, что смогу сделать это, как в этом упрощенном примере:

Element paragraph = someDocument.select("p").first();
paragraph.text("First sentence.  Second sentence.");

Но Jsoup превращает мой   в  , эффективно кодируя сам амперсанд. Я предполагаю, что мой реальный вопрос: как я могу вручную написать символ амперсанда в текст Element?


person Knave    schedule 19.11.2011    source источник


Ответы (2)


Вы делаете Element.text. Если это html, вместо этого используйте .html(String s), поэтому замените свой код на

Element paragraph = someDocument.select("p").first();
paragraph.html("First sentence.  Second sentence.");
person Adithya Surampudi    schedule 19.11.2011
comment
Таким образом, вам не нужно беспокоиться о добавлении других специальных символов html. - person Adithya Surampudi; 19.11.2011

Попробуйте использовать значение Unicode для неразрывного пробела.

Element paragraph = someDocument.select("p").first();
paragraph.text("First sentence.\u00a0Second sentence.");
person orien    schedule 19.11.2011
comment
+1. И если вы предпочитаете nbsp вместо 00a0, вы можете использовать org.jsoup.nodes.Entities.getCharacterByName("nbsp"). - person ruakh; 19.11.2011
comment
Использование escape-последовательности Unicode непосредственно в строке не работает. Однако Entities.getCharacterByName(String s) работает. По-прежнему придерживаюсь другого ответа, потому что считаю, что он больше подходит для моей конкретной ситуации. +1 к комментарию руаха. Черт бы побрал мою нубщину. Могу ли я не добавлять +1 к комментарию? Кажется, я проголосовал за него вместо этого. . . - person Knave; 19.11.2011