J'ai une question concernant XML, l'utilisation de DOM par Java et les nœuds vides. Je travaille actuellement sur un projet dans lequel je prends un fichier descripteur XML de machines abstraites (pour l'analyse de texte) et j'analyse une série de chaînes d'entrée avec celles-ci. La construction et l'interprétation de ces machines abstraites sont toutes faites et fonctionnent bien, mais j'ai rencontré une exigence XML plutôt intéressante. Plus précisément, je dois être capable de transformer un nœud InputString vide en une chaîne vide ("") et d'exécuter mes routines d'analyse. Le problème, cependant, se produit lorsque je tente d'extraire ce nœud vide de mon arborescence XML. Cela provoque une exception de pointeur NULL, puis généralement de mauvaises choses commencent à se produire. Voici l'extrait infractionnel de XML (Notez que le premier élément est vide):Gestion de nœuds vides avec Java DOM
<InputStringList>
<InputString></InputString>
<InputString>000</InputString>
<InputString>111</InputString>
<InputString>01001</InputString>
<InputString>1011011</InputString>
<InputString>1011000</InputString>
<InputString>01010</InputString>
<InputString>1010101110</InputString>
</InputStringList>
J'extrait mes chaînes de la liste à l'aide:
//Get input strings to be validated
xmlElement = (Element)xmlMachine.getElementsByTagName(XML_INPUT_STRING_LIST).item(0);
xmlNodeList = xmlElement.getElementsByTagName(XML_INPUT_STRING);
for (int j = 0; j < xmlNodeList.getLength(); j++) {
//Add input string to list
if (xmlNodeList.item(j).getFirstChild().getNodeValue() != null) {
arrInputStrings.add(xmlNodeList.item(j).getFirstChild().getNodeValue());
} else {
arrInputStrings.add("");
}
}
Comment dois-je traiter ce cas vide? J'ai trouvé beaucoup d'informations sur la suppression des nœuds de texte vides, mais je dois toujours analyser les nœuds vides comme des chaînes vides. Idéalement, je voudrais éviter d'utiliser un caractère spécial pour désigner une chaîne vide.
Merci d'avance pour votre temps.
Je vois. Donc, puisque mon élément n'a techniquement pas de nœud de texte, getFirstChild() explose. Logique. Et getTextContent() a fonctionné comme un charme. Merci pour la réponse rapide. – phobos51594