Как обновить пустое значение Node, используя Xpath Java? - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь обновить пустое значение узла с помощью xpath. Когда для узла задано какое-то значение, оно обновляется. Но если значение узла пусто, оно не обновляется.

Ниже приведен фрагмент кода:

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 голосов
/ 28 августа 2018

Это правильный путь:

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...