我已经构建了一个使用saxon-he的xpath组件从html文档中提取数据的方法。我为此使用了w3c dom对象模型。如何从java中的org.w3c.dom.Node获取html?
我已经创建了返回文本值(jsoupElement.text())的方法,类似像jsoup文本值方法:
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。我如何从org.w3c.dom.Node获取html作为字符串?在文档中我找不到任何关于此的内容。
只是澄清:我需要内部的HTML(有或没有节点元素/标签)作为字符串。类似像http://api.jquery.com/html/或http://jsoup.org/apidocs/org/jsoup/nodes/Element.html#html--
在Java中,您可以使用LSSerializer或使用默认Transformer对子节点或节点本身进行序列化,但是它们会为您提供DOM树的XML序列化,而不是原始的XML或HTML。 –
感谢您的回答。是否有可能使用另一个文档对象模型来获取原始html?我可以选择这些模型:http://www.saxonica.com/documentation/index.html#!xpath-api/jaxp-xpath/factory – whitenexx
我不认为有任何方法可以从任何原始HTML树模型,它存储节点而不是标记。我对jsoup不熟悉,但是他们可能也会序列化它们的树,只有HTML,而不是XML,如果你调用该方法来给你内部的HTML。 Saxon作为XSLT 2处理器支持使用具有正确输出方法的XSLT样式表的HTML和XHTML序列化(即''或'')所以你可以使用带有样式表的Transformer根据需要设置方法。也许API也提供了一些方法。 –