Я создал метод, который извлекает данные из html-документа, используя компоненты xpath саксон-он. Для этого я использую объектную модель w3c dom.Как получить html из org.w3c.dom.Node в java?
Я уже создал метод, который возвращает текст-значение, аналогичное как метод значения текста из jsoup (jsoupElement.text()):
protected String getNodeValue(Node node) {
NodeList childNodes = node.getChildNodes();
for (int x = 0; x < childNodes.getLength(); x++) {
Node data = childNodes.item(x);
if (data.getNodeType() == Node.TEXT_NODE)
return data.getNodeValue();
}
return "";
}
Это прекрасно работает, но я теперь мне нужно основной HTML выбранного узла (с jsoup это будет jsoupElement.html()). Используя объектную модель w3c dom, у меня есть org.w3c.dom.Node. Как я могу получить html из org.w3c.dom.Node как String? Я не мог найти ничего такого в документации.
Просто для уточнения: Мне нужен внутренний html (с или без элемента узла/тега) как String. Подобно как http://api.jquery.com/html/ или http://jsoup.org/apidocs/org/jsoup/nodes/Element.html#html--
В Java вы можете сериализовать дочерние узлы или сам узел с помощью LSSerializer или используя трансформатор по умолчанию, однако они дадут вам сериализацию XML дерева DOM, а не оригинальный XML или HTML. –
Спасибо за ваш ответ. Возможно ли получить исходный html с использованием другой объектной модели документа? Я могу выбирать между этими моделями: http://www.saxonica.com/documentation/index.html#!xpath-api/jaxp-xpath/factory – whitenexx
Я не думаю, что есть какой-либо способ получить исходный HTML из любого дерева, он хранит узлы, а не разметку. Я не знаком с jsoup, но они, вероятно, также сериализуют свое дерево, только для HTML, а не для XML, если вы вызываете этот метод, чтобы дать вам внутренний HTML. Saxon как процессор XSLT 2 поддерживает сериализацию HTML и XHTML с таблицей стилей XSLT, имеющей правильный метод вывода (например, ' ' или ' ') поэтому вы можете использовать Transformer со стилем, устанавливая метод по мере необходимости. Возможно, API также предлагает какой-то способ. –