2011-11-09 11 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标签进行字符串搜索。