Java XML和DOM获取#文本输出
我试图通过迭代子节点列表来读取Collada XML文件,并且每隔一次输出都读取#文本。这是怎么回事?我的代码:Java XML和DOM获取#文本输出,java,xml,dom,Java,Xml,Dom,我试图通过迭代子节点列表来读取Collada XML文件,并且每隔一次输出都读取#文本。这是怎么回事?我的代码: public void runTest() { File file = new File( "test.dae" ); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = null; try {
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 );
}
}
public void运行测试(){
File File=新文件(“test.dae”);
DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance();
DocumentBuilder=null;
试一试{
builder=factory.newDocumentBuilder();
}
捕获(ParserConfiguration异常错误){
System.out.println(“--ParserConfigurationException:+error.getMessage());返回;
}
单据=空;
试一试{
document=builder.parse(文件);
}
捕获(IOException错误){
System.out.println(“--IOException:+error.getMessage());返回;
}
捕获(SAX异常错误){
System.out.println(“--SAXException:+error.getMessage());返回;
}
Node=document.getDocumentElement();
字符串node_name=node.getNodeName();
System.out.println(节点名称);
NodeList node_list=node.getChildNodes();
for(int iterator=0;iterator
“#text”只是在文本节点上调用getNodeName()方法的结果。(如果您查看org.w3c.dom.Node的API文档,就会看到。)如果您想要节点的实际文本内容,可以使用getNodeValue()方法
如果您不希望有任何文本节点,请不要忘记,即使是一点点空白,如新行字符,也会被视为文本。Hmm。我希望文本节点中会有文本。我只是不希望getNodeName()除了获取节点名之外做任何事情。在这里,它看起来像是作为getNodeType()或其他什么的月光。不管怎样,我不会质疑为什么,可能有一个很好的理由。到目前为止,我只需要添加如下代码:if(node_name==“#text”)continue;为了得到我想要的。为了将来的参考,有一个更好的方法来获取元素。查看
Element
界面的getElementsByTagName
方法。您可以使用getElementsByTagName(“*”)
仅获取给定元素的元素子元素。如果您正在查看节点列表,则需要对元素进行一些转换,但这是值得的。