Используя этот пример XML:
<templateitem itemid="5">
<templateitemdata>%ARN%</templateitemdata>
</templateitem>
<templateitem itemid="6">
<templateitemdata></templateitemdata>
</templateitem>
Я использую XPath для получения и установки значений узлов. Код, который я использую для получения узлов:
private static Node ***getNode***(Document doc, String XPathQuery) throws XPathExpressionException
{
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile(XPathQuery);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
if(nodes != null && nodes.getLength() >0)
return nodes.item(0);
throw new XPathExpressionException("No node list found for " + XPathQuery);
}
Чтобы получить значение% ARN%: "// templateitem [@ itemid = 5 ] / templateitemdata / text ()" и с getNode метод Я могу получить узел, а затем вызвать getNodeValue ().
Помимо получения этого значения, я хотел бы установить значение templateitemdata для "templateitem [@ itemid = 6 ]", поскольку оно пустое. Но код, который я использую, не может получить узел, так как он пустой. Результат равен нулю.
Знаете ли вы, как получить узел, чтобы я мог установить значение?