J'utilise tDom pour faire une boucle sur du XML et extraire le texte de chaque élément().TCL tDom Tag XML vide
set xml {
<systems>
<object>
<type>Hardware</type>
<name>Server Name</name>
<attributes>
<vendor></vendor>
</attributes>
</object>
<object>
<type>Hardware</type>
<name>Server Two Name</name>
<attributes>
<vendor></vendor>
</attributes>
</object>
</systems>
};
set doc [dom parse $xml]
set root [$doc documentElement]
set nodeList [$root selectNodes /systems/object]
foreach node $nodeList {
set nType [$node selectNodes type/text()]
set nName [$node selectNodes name/text()]
set nVendor [$node selectNodes attributes/vendor/text()]
# Etc...
puts "Type: "
puts [$nType data]
# Etc ..
puts [$nVendor data]
}
Mais quand il essaie d'imprimer le vendeur, qui est vide, il thows l'erreur nom de la commande non valide « ». Comment puis-je ignorer cela et juste mettre $ nVendor à une chaîne vide?
Si vous écrivez le XPath légèrement différemment, vous pouvez garantir qu'il y aura exactement 0 ou 1 valeur dans la liste des résultats et en utilisant 'llength' pour tester, c'est un op trivial. –