Вместо вызова getNodeValue()
/ setNodeValue()
на узле элемента <firstName>
попробуйте получить дочерний текстовый узел элемента firstName и вызвать getNodeValue()
/ setNodeValue()
для него.
Попробуйте
if(currentNode.getNodeName().equals("firstName"))
{
Node textNode = currentNode.getFirstChild();
System.out.println("Initial value:" + textNode.getNodeValue());
String nodeValue="salma";
textNode.setNodeValue(nodeValue);
System.out.println("Modified value:" + textNode.getNodeValue());
}
Из спецификации DOM ,
Атрибуты nodeName, nodeValue и атрибуты включены в качестве механизма для получения информации об узле без перехода наконкретный производный интерфейс.В тех случаях, когда нет явного сопоставления этих атрибутов для определенного типа узла (например, nodeValue для элемента или атрибутов для комментария), возвращается null .
Аналогично в документации Java для интерфейса Node таблица в верхней части показывает, что значение nodeValue элемента равно нулю.
Именно поэтому использование getNodeValue для элемента приведет квсегда возвращайте ноль, и почему вам нужно сначала использовать getFirstChild (), чтобы получить текстовый узел (при условии, что нет других дочерних узлов).Если есть смесь дочерних узлов элемента и текста, вы можете использовать getNodeType (), чтобы проверить, какой дочерний узел (текст типа 3).