我需要解析数据库中的XML文档并搜索其中的给定表达式。然后,如果给定的表达式存在于XML中,我必须返回一个String值,否则我需要通过下一个表达式解析并返回另一个String值等等。在XPath表达式中使用条件
// An xml document is passed as a Node when getEntryType() method is called
public static class XMLTextFields {
public static String getEntryType(Node target) throws XPathExpressionException {
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXpath();
String entryType = null;
String [] expression = new String [] {"./libx:package", "./libx:libapp", "./libx:module"};
String [] type = new String [] {"Package", "Libapp", "Module" };
for (int i = 0; i < 3; i ++) {
XPathExpression expr = xpath.compile(expression[i]);
Object result = expr.evaluate(target, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
if (nodes.getLength() == 0)
continue;
entryType = (type[i]);
}
return entryType;
}
}
我想知道是否有一个更简单的方式做到这一点:
我用下面的代码实现这一点?意思是,有没有一种方法可以像使用“表达式”一样的函数返回一个字符串,如果表达式存在于xml中的话。
我猜我应该可以做这样的事情,但我不能完全确定:如果libx中
String [] Expression = new String [] {"[./libx:package]\"Package\"", ....}
意义,回归“大礼包”:在给定的XML存在包节点
我正在使用XPath处理器版本1,所以这似乎是最合适的。 – sony 2010-09-21 03:57:24