Yup, it's a a mistake coming from debugging. Usually I would not create an extra variable, but simply pass the node in the list.
But it seems the nodeValue can not be changed, fortunately in my case the node value is a leaf. I simply remove the leaf node and create a new one with the correct price.
But in case the node to be changed is a complex one and thus too expensive too recreate, there is some info in the source code should someone has the same problem:
{ NodeType, NodeName and NodeValue had been moved from fields to functions.
This lowers memory usage and also obsoletes most constructors,
at a slight performance penalty. However, NodeName and NodeValue are
accessible via fields using specialized properties of descendant classes,
e.g. TDOMElement.TagName, TDOMCharacterData.Data etc.}
So you can cast the node to TDOMCharacterData and change the DATA not the NodeValue. Internal, the data property will set the node value.
Hope it helps and thanks to the helpful people here.