0

有谁知道如何找出一个元素是否包含<![CDATA[ text ]]>?我搜索了 dom4j API 和 Jaxen,但我找不到如何做到这一点……如果我检索文本,它的 cdata 包装器会被修剪。

4

3 回答 3

1

方法:

Node.asXML()

返回整个元素,其值未经任何修改。

因此,如果您有:

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

调用文本方法将返回“值”,但调用“asXML()”将返回:

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

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

于 2011-11-09T21:11:19.370 回答
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

于 2011-11-09T20:59:58.137 回答
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;
}
于 2011-11-09T21:26:24.983 回答