我需要解析數據庫中的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