Использование setNodeValue
на узле для изменения его значения будет работать, но только если это текстовый узел.По всей вероятности, метод setNodeValue
был вызван на узле, который не был текстовым узлом.В действительности, ваш код может модифицировать узел Element и, следовательно, не иметь никакого результата.
Чтобы объяснить это далее, ваш документ:
<mytag> this value is to be changed </mytag>
фактически рассматривается синтаксическим анализатором как:
Element (name = mytag, value = null)
- TextNode (name = #text, value= " this value is to be changed ")
Узлы элемента всегда будут иметь значение null, поэтому установка значения для них не изменит значение дочернего текстового узла.Использование setTextContent, как предложено в одном из ответов, будет работать, поскольку оно изменяет значение TextNode вместо Element.
Вы также можете использовать setNodeValue для изменения значения, но только после обнаружения, если узел являетсяTextNode:
if (node != null && node.getNodeType() == Node.TEXT_NODE) {
node.setNodeValue(nodeValue);
return true;
}