这是一个java问题,顺便说一句。
我正在使用xPath,一切都很有效,直到我到达我正在寻找的节点集的最后一点,我需要做一个非常难看的评估,看看节点我是不是在我获得它的价值之前,处理是ELEMENT或TEXT类型。我想知道是否有一种方法沿着我在下面写的那个方法来获得价值。
XPathExpression expr = inFeed.getXpath().compile(xPathEx);
Object result = expr.evaluate( rootNode, XPathConstants.NODESET);
NodeList nodeList = (NodeList)result;
ret = "";
for(int i = 0; i< nodeList.getLength() ; i++){
ret += getNodeValue(nodeList.item(i)) + ",";
}
所以......看看getNodeValue()方法?它获取了该节点内部的字符串,如果节点碰巧不是TEXT类型,它会寻找子节点,当它找到TEXT节点时,它会返回该节点。
必须有一个Node本地方式才能做到这一点,我忽略了,对吧?
答案 0 :(得分:2)
呸!它就在那里...... Node.getTextContent()。 <roseanne-roseannadanna> nevermind! </roseanne-roseannadanna>
答案 1 :(得分:1)
使用dom4j,你可以这么简单......
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
SAXReader reader = new SAXReader();
Document doc = reader.read('example.xml');
StringBuilder ret = new StringBuilder();
for (Node n : doc.selectNodes('//book')) {
if (ret.length() > 0) {
ret.append(", ");
}
ret.append(n.getText());
}
println ret.toString();
(注意:语法是groovy,但它在Java中的工作方式相同。)
selectNodes()方法采用xpath表达式。 getText()方法返回Node的所有文本内容,包括其子节点。