如何使用Xpath Java更新空Node值?

时间:2018-08-28 07:05:43

标签: java xpath

我正在尝试使用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");

1 个答案:

答案 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.