我已經構建了一個使用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也提供了一些方法。 –