【发布时间】:2011-11-09 20:53:40
【问题描述】:
有人知道如何找出一个元素是否包含<![CDATA[ text ]]> 吗?我通过 dom4j API 和 Jaxen 进行搜索,但找不到如何做到这一点...如果我检索文本,则 cdata 包装器会被修剪。
【问题讨论】:
有人知道如何找出一个元素是否包含<![CDATA[ text ]]> 吗?我通过 dom4j API 和 Jaxen 进行搜索,但找不到如何做到这一点...如果我检索文本,则 cdata 包装器会被修剪。
【问题讨论】:
方法:
Node.asXML()
返回整个元素,其值未经任何修改。
如果你有:
<nodes>
<node><![CDATA[value]]></node>
</nodes>
调用文本方法将返回“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;
}
【讨论】:
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
【讨论】: