2011-11-09 10 views
0

有沒有人有一個想法如何找出一個元素是否包含<![CDATA[ text ]]>?我通過dom4j API和Jaxen進行搜索,但我找不到如何做到這一點......如果我檢索文本,它將裁剪掉cdata包裝。如何使用Dom4j測試元素的CDATA值?

回答

0

技術上你仍然可以這樣做。


public boolean isCDATA(org.dom4j.Node node) { 
    for (org.dom4j.Node n : node.content()) { 
    if (org.w3c.dom.Node.CDATA_SECTION_NODE == n.getNodeType()) { 
     return true; 
    } 
    } 
    return false; 
} 
+0

你是對的,但它必須是元素,因爲該方法在AbstractBranch類中。 – lisak

0

http://dom4j.sourceforge.net/dom4j-1.6.1/apidocs/org/dom4j/Node.html#getNodeType%28%29

這項工作?

public short getNodeType() 

根據節點類型返回代碼。這使得處理節點的多態性變得容易得多,因爲可以使用switch語句而不是多個if(instanceof)語句。

返回:

Node.asXML()

其值由任何未修飾的返回整個元件:如ELEMENT_NODE節點類型,例如或ATTRIBUTE_NODE

+0

你問我:-)?它不會,它返回元素的類型...我關心它的值 – lisak

+0

您可以使用它,但它必須與content()方法結合使用。 –

1

的方法,一個W3C DOM complient代碼。

所以,如果您有:

<nodes> 
    <node><![CDATA[value]]></node> 
</nodes> 

調用文本方法將返回 「值」,但調用 「asXML()」 將返回:

<node><![CDATA[value]]></node> 

從那裏,我想你可以對CDATA標籤進行字符串搜索。