2013-10-24 42 views
0

我尝试使用下面的程序来解析XML文件,但不知道为什么getFirstChild()是空白的,而打印过滤.​​..XML使用的getElementsByTagName

nodelist包含所有employee节点,我处理每个节点,试图让firstchildlastchild ..

XML文件:

<?xml version="1.0"?> 
<Employees> 
    <Employee emplid="1111" type="admin"> 
     <firstname>John</firstname> 
     <lastname>Watson</lastname> 
     <age>30</age> 
     <email>[email protected]</email> 
    </Employee> 
    <Employee emplid="2222" type="admin"> 
     <firstname>Sherlock</firstname> 
     <lastname>Homes</lastname> 
     <age>32</age> 
     <email>[email protected]</email> 
    </Employee> 
</Employees> 

java程序:

package XML; 


import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.ParserConfigurationException; 

import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 
import org.w3c.dom.Node; 
import org.w3c.dom.Element; 
import org.xml.sax.SAXException; 

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
public class XMLTest { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 


     DocumentBuilderFactory builderfactory = DocumentBuilderFactory.newInstance(); 
     try { 
      DocumentBuilder builder = builderfactory.newDocumentBuilder(); 
      Document xmldocument = builder.parse(new FileInputStream(new File("c:/employees.xml"))); 
      NodeList node = xmldocument.getElementsByTagName("Employee"); 
      System.out.println("node length="+node.getLength()); 
      for (int temp = 0; temp < node.getLength(); temp++){ 
       System.out.println("First Child = " +node.item(temp).getFirstChild().getNodeValue()); 
       System.out.println("Last Child = " +node.item(temp).getLastChild().getNodeValue()); 
      } 
     } catch (ParserConfigurationException | SAXException | IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 




    } 

} 

回答

1

这很可能是由于作为列表中的文本节点以及元素出现的空白(空格,制表符,换行符等)。

在使用java的XML DOM时,我倾向于写一个像this这样的帮手,因为它非常乏味。

0

并对DocumentBuilderFactory控制空格的处理尝试:

builderFactory.setIgnoringElementContentWhitespace(true); 

希望它能帮助!

相关问题