代码之家  ›  专栏  ›  技术社区  ›  Espen

XML和DOM获取文本输出

  •  3
  • Espen  · 技术社区  · 14 年前

    我试图通过遍历子节点列表来读取Collada XML文件,而其他每个输出都读取文本。这是怎么回事?我的代码:

    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 );
        }
    }
    
    1 回复  |  直到 14 年前
        1
  •  4
  •   Paul Clapham    14 年前

    “#text”只是在文本节点上调用getNodeName()方法的结果。(如果查看org.w3c.dom.Node的API文档,您将看到这一点。)如果您想要节点的实际文本内容,您将使用getNodeValue()方法。

    如果您不希望出现任何文本节点,请不要忘记,即使是一点点空白,如新行字符,也会被视为文本。