NodeValue ist also ein String... oder nicht?
if xnAttr.NodeValue <> '' then
Wenn der Knoten nicht nil ist, kann der String höchstens leer sein!
Sag doch mal kurz welchen Typ NodeValue hat...
Edit: Das hat dann ja schon wieder gar nix mit dem zu tun, was du erfragt hast