Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Dom4j测试元素的CDATA值?_Java_Cdata_Dom4j - Fatal编程技术网

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

Java 如何使用Dom4j测试元素的CDATA值?,java,cdata,dom4j,Java,Cdata,Dom4j,有人知道如何确定元素是否包含吗?我搜索了dom4japi和Jaxen,但找不到如何做到这一点。。。如果检索到文本,cdata包装将被修剪。 这样行吗 public short getNodeType() 根据节点的类型返回代码。由于可以使用switch语句代替多个if(instanceof)语句,这使得多态处理节点变得更加容易 返回:节点类型(如元素节点或属性节点)的W3C DOM complient代码方法: Node.asXML() 返回整个元素,其值不受任何修改 因此,如果你有: <

有人知道如何确定元素是否包含
吗?我搜索了dom4japi和Jaxen,但找不到如何做到这一点。。。如果检索到文本,cdata包装将被修剪。

这样行吗

public short getNodeType()
根据节点的类型返回代码。由于可以使用switch语句代替多个if(instanceof)语句,这使得多态处理节点变得更加容易

返回:节点类型(如元素节点或属性节点)的W3C DOM complient代码方法:

Node.asXML()
返回整个元素,其值不受任何修改

因此,如果你有:

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

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

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


从这里开始,我想您可以对CDATA标记进行字符串搜索。

从技术上讲,您仍然可以这样做


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;
}

你问我:-)?它不会,它返回元素的类型。。。我关心它的值。你可以使用它,但它必须与content()方法结合使用。你是对的,但它必须是元素,因为该方法在AbstractBranch类中。