Как я могу получить контент HTML <body> - PullRequest
1 голос
/ 23 декабря 2009

когда у меня есть HTML:

<html>
<head>
</head>
<body>
 text
  <div>
  text2
    <div>
    text3
    </div>
  </div>
</body>
</html>

как я могу получить с помощью DOM-парсера в JAVA-содержимом тела: text <div> text2 <div> text3 </div> </div> потому что метод getTextContent возвращает: text text2 text3. - так без тегов.

Возможно с SAX, но возможно и с DOM?

Ответы [ 2 ]

1 голос
/ 23 декабря 2009

Вам потребуется проанализировать документ в DOM и сериализовать только ту часть DOM, которую вы хотели. Используя интерфейсы DOM уровня 3 LS, вы можете сериализовать внешний XML одного узла с помощью:

LSSerializer serializer= implementation.createLSSerializer();
String html= serializer.writeToString(node);

Чтобы получить внутренний XML, вам нужно writeToString каждый дочерний узел по очереди (например, в StringBuffer).

В зависимости от того, какую реализацию DOM вы используете, могут быть альтернативные нестандартные методы. Также могут быть риски с сериализацией HTML в XML, если вы этим занимаетесь ... например. стандартный сериализатор XML может выводить самозакрывающийся тег для пустого тега, что может запутать браузеры, анализирующие вывод как legacy-HTML.

1 голос
/ 23 декабря 2009

getTextContent ведет себя так, как я и ожидал, - получая текстовое содержимое фрагмента HTML. Можете ли вы проверить документацию API для парсера DOM и посмотреть, есть ли подобный метод с именем вроде getHtmlContent?

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