我正在尝试使用xpath更新空节点值。当Node设置了一些值时,它会更新。但是如果node值是空,则它不会更新。
下面是代码段:
Document document = dBuilder.parse(new File(filename));
document.getDocumentElement().normalize();
XPath xPath = XPathFactory.newInstance().newXPath();
String expression = "/Document/FIToFICstmrCdtTrf/GrpHdr/TtlIntrBkSttlmAmt";
NodeList nodes = (NodeList) xPath.evaluate(expression, document,
XPathConstants.NODESET);
nodes.item(0).setNodeValue("ABC");
答案 0 :(得分:0)
这是正确的方法:
node.appendChild(document.createTextNode("ABC"));
仅获取一个节点而不是节点列表(如果这是唯一的节点)会更有效:
Node node = (Node) xPath.evaluate(expression, document, XPathConstants.NODE);
您可以通过以下方式检查现有值: 1,如果使用当前的xpath,则必须检查是否存在子节点:
node.getFirstChild() != null // in this case, the node.getFirstChild().getNodeValue() gives back the stored text.
2,或者,您可以通过以下方式对其进行测试:
String expression = "/Document/FIToFICstmrCdtTrf/GrpHdr/TtlIntrBkSttlmAmt/text()";
Node node = (Node) xPath.evaluate(expression, document,
XPathConstants.NODE);
node != null // in this case, the node.getNodeValue() gives back the stored text.