如何使用Dom4j测试元素的CDATA值?

时间:2011-11-09 20:53:41

标签: java cdata dom4j

有没有人知道如何找出元素是否包含<![CDATA[ text ]]>?我搜索dom4j API和Jaxen,我找不到怎么做...如果我检索文本,就会修剪cdata包装。

3 个答案:

答案 0 :(得分:1)

方法:

Node.asXML()

返回整个元素,其值不受任何修改。

所以如果你有:

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

调用text方法将返回“value”,但调用“asXML()”将返回:

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

从那里,我猜你可以对CDATA标签进行字符串搜索。

答案 1 :(得分:0)

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

这会有用吗?

public short getNodeType()

根据节点类型返回代码。这使得处理节点的多态性变得更加容易,因为可以使用switch语句而不是多个if(instanceof)语句。

返回:节点类型的W3C DOM兼容代码,例如ELEMENT_NODE或ATTRIBUTE_NODE

答案 2 :(得分: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;
}