Je suis en train de lire un fichier XML Collada en parcourant une liste de nœud enfant, et chaque autre sortie se lit #text. C'est à propos de quoi? Mon code:XML et DOM obtenir #text sortie
public void runTest() {
File file = new File("test.dae");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
}
catch(ParserConfigurationException error) {
System.out.println("--ParserConfigurationException: " + error.getMessage()); return;
}
Document document = null;
try {
document = builder.parse(file);
}
catch(IOException error) {
System.out.println("--IOException: " + error.getMessage()); return;
}
catch(SAXException error) {
System.out.println("--SAXException: " + error.getMessage()); return;
}
Node node = document.getDocumentElement();
String node_name = node.getNodeName();
System.out.println(node_name);
NodeList node_list = node.getChildNodes();
for(int iterator = 0; iterator < node_list.getLength(); iterator++) {
Node child_node = node_list.item(iterator);
String child_node_name = child_node.getNodeName();
System.out.println("-- " + child_node_name);
}
}
Hmm. Je m'attendrais à ce qu'il y ait du texte dans les nœuds de texte. Je ne me attendais pas GetNodeName() autre chose que, eh bien faire, obtenir le nom de noeud. Ici, il semble que ce soit clair comme getNodeType() ou autre. De toute façon, je ne vais pas me demander pourquoi, il y a probablement une bonne raison. A partir de maintenant je viens d'ajouter du code comme si (node_name == « #text ») continue; pour obtenir ce que je veux. – Espen
Pour référence future, il y a une meilleure façon d'obtenir juste les éléments. Découvrez la méthode 'getElementsByTagName' de l'interface' Element'. Vous pouvez utiliser 'getElementsByTagName (" * ")' pour obtenir uniquement les éléments enfants d'un élément donné. Cela nécessite un certain casting vers 'Element' si vous regardez dans une liste de nœuds, mais ça vaut le coup. – fakedad