2016-03-21 7 views
-2

ich die XML-Datei cXml.xml haben zu lesen:Wie aus einer XML-Datei Feld java

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
    <clients> 
    <entity class="movieRental.domain.Client"> 
    <field name="name" type="java.lang.String" value="mary"/> 
    <field name="age" type="int" value="23"/> 
    <field name="id" type="java.lang.Object" value="1"/> 
    </entity> 

    <entity class="movieRental.domain.Client"> 
    <field name="name" type="java.lang.String" value="anne"/> 
    <field name="age" type="int" value="34"/> 
    <field name="id" type="java.lang.Object" value="2"/> 
    </entity> 

    <entity class="movieRental.domain.Client"> 
    <field name="name" type="java.lang.String" value="john"/> 
    <field name="age" type="int" value="22"/> 
    <field name="id" type="java.lang.Object" value="3"/> 
    </entity> 

    <entity class="movieRental.domain.Client"> 
    <field name="name" type="java.lang.String" value="miriam"/> 
    <field name="age" type="int" value="28"/> 
    <field name="id" type="java.lang.Object" value="7"/> 
    </entity> 

    </clients> 

und ich möchte von ihm lesen und für diese auf dem console.My Java-Code zu drucken ist:

package movieRental.util; 

import java.io.File; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.DocumentBuilder; 
import org.w3c.dom.Document; 
import org.w3c.dom.NodeList; 
import org.w3c.dom.Node; 
import org.w3c.dom.Element; 

    public class ClientX { 

    public static void main(String argv[]) { 

     try { 

      File fXmlFile = new File("C:\\Users\\Adina\\Desktop\\proj1-vers2\\data\\cXml.xml"); 
      DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
      Document doc = dBuilder.parse(fXmlFile); 

      doc.getDocumentElement().normalize(); 

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

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

      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("Entity class : " + eElement.getAttribute("class")); 
        System.out.println("Name : " + eElement.getElementsByTagName("name").item(0).getTextContent()); 
        System.out.println("Type : " + eElement.getElementsByTagName("type").item(0).getTextContent()); 
        System.out.println("Value : " + eElement.getElementsByTagName("value").item(0).getTextContent()); 


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

    } 

Wenn ich diese Klasse laufe es gibt mir:

Current Element :entity 
    Entity class : movieRental.domain.Client 
    java.lang.NullPointerException 
    at movieRental.util.ClientX.main(ClientX.java:46) 

Wie alle Werte aus der xML-Datei drucken? Vielen Dank.

+0

Mögliche Duplikat [? Was für eine Null-Zeiger-Ausnahme ist, und wie kann ich es beheben] (http://stackoverflow.com/questions/218384/what-is- a-null-pointer-exception-and-how-do-i-fix-it) – TheMirrox

+0

Überprüfen Sie Ihren Code. Das Element, das Sie analysieren, ist das übergeordnete Element der Feld-Tags. Es gibt kein Tag namens 'name' sie sind Attribute von 'field' –

Antwort

0

Versuchen Sie stattdessen:

System.out.println("Entity class : " + eElement.getAttribute("class")); 
NodeList children = eElement.getChildNodes(); 
for (int i = 0; i < children.getLength(); i++) { 
    if (children.item(i).getNodeName().equalsIgnoreCase("field")) { 
     System.out.println("Name : " + children.item(i).getAttributes().getNamedItem("name")); 
     System.out.println("Type : " + children.item(i).getAttributes().getNamedItem("type")); 
     System.out.println("Value : " + children.item(i).getAttributes().getNamedItem("value")); 
    } 
} 
Verwandte Themen