2015-08-03 68 views
1

我通过使用Java的下面的代码创建一个XML文件:XML文件不是只读完全

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

// root elements 
Document doc = docBuilder.newDocument(); 
Element rootElement = doc.createElement("company"); 
doc.appendChild(rootElement); 

// staff elements 
Element staff = doc.createElement("Staff"); 
rootElement.appendChild(staff); 

// set attribute to staff element 
Attr attr = doc.createAttribute("id"); 
attr.setValue("1"); 
staff.setAttributeNode(attr); 

// shorten way 
// staff.setAttribute("id", "1"); 

// firstname elements 
Element firstname = doc.createElement("firstname"); 
firstname.appendChild(doc.createTextNode("yong")); 
staff.appendChild(firstname); 

// lastname elements 
Element lastname = doc.createElement("lastname"); 
lastname.appendChild(doc.createTextNode("mook kim")); 
staff.appendChild(lastname); 

// nickname elements 
Element nickname = doc.createElement("nickname"); 
nickname.appendChild(doc.createTextNode("mkyong")); 
staff.appendChild(nickname); 

// salary elements 
Element salary = doc.createElement("salary"); 
salary.appendChild(doc.createTextNode("100000")); 
staff.appendChild(salary); 

// write the content into xml file 
TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new File("D:\\file.xml")); 

// Output to console for testing 
// StreamResult result = new StreamResult(System.out); 

transformer.transform(source, result); 

System.out.println("File saved!"); 

,然后我想用下面的代码来读取这个文件:

public class ReadXMLFile { 

    public static void main(String argv[]) { 

    try { 

    File fXmlFile = new File("D:\\file.xml"); 
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    Document doc = dBuilder.parse(fXmlFile); 

    //optional, but recommended 
    //read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-work 
    doc.getDocumentElement().normalize(); 

    System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); 

    NodeList nList = doc.getElementsByTagName("staff"); 

    System.out.println("----------------------------"); 

    for (int temp = 0; temp < nList.getLength(); temp++) { 

     Node nNode = nList.item(temp); 

     System.out.println("\nCurrent Element :" + nNode.getNodeName()); 

     if (nNode.getNodeType() == Node.ELEMENT_NODE) { 

      Element eElement = (Element) nNode; 

      System.out.println("Staff id : " + eElement.getAttribute("id")); 
      System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent()); 
      System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent()); 
      System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent()); 
      System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent()); 

     } 
    } 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } 
    } 

} 

但在输出只是写下面的文字:

> Root element :company 
---------------------------- 

和其他字段都没有写在输出中,而看起来似乎写作者和读者代码都相互匹配。 阅读器代码中应该修改什么? 谢谢

回答

0

更正声明如下

NodeList nList = doc.getElementsByTagName("Staff"); 
在参数

,你当“参谋”通过。

+0

谢谢。马丽娟! – sha