Ich versuche, eine Collada XML-Datei zu lesen, indem ich durch eine Kind-Knoten-Liste iteriert, und jede andere Ausgabe liest #text. Um was geht's hier? Mein Code:XML und DOM erhalten #text output
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. Ich würde erwarten, dass es Text in den Textknoten gibt. Ich habe einfach nicht erwartet, dass getNodeName() irgendetwas anderes tut, als den Namen des Knotens zu bekommen. Hier scheint es, als ob es getNodeType() oder was auch immer moonlights. Wie auch immer, ich werde mich nicht fragen, warum, es gibt wahrscheinlich einen guten Grund. Ab sofort muss ich nur Code hinzufügen, wenn if (node_name == "#text") fortfahren; um zu bekommen, was ich will. – Espen
Für zukünftige Referenz gibt es einen besseren Weg, um nur die Elemente zu bekommen. Überprüfen Sie die 'getElementsByTagName' Methode der' Element' Schnittstelle. Sie können 'getElementsByTagName (" * ")' verwenden, um nur die untergeordneten Elemente eines bestimmten Elements zu erhalten. Es erfordert einige Umwandlung in 'Element', wenn Sie durch eine NodeList schauen, aber es ist es wert. – fakedad