Мне нужно проанализировать XML-документ в базе данных и найти в нем заданное выражение. Затем я должен вернуть значение String, если данное выражение присутствует в XML else, мне нужно проанализировать следующее выражение и вернуть другое значение 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.
Я предполагаю, что я должен быть в состоянии сделать что-то подобное, но я не совсем уверен:
String [] Expression = new String [] {"[./libx:package]\"Package\"", ....}
Значение, возвращение «Пакет», если libx: пакет узел существует в данном XML
Я использую процессор XPath версии 1, поэтому это, по-видимому, лучше всего подходит. – sony