2014-04-01 77 views
0

我正在從事XML到java的解析。我有一個類似於這個場景。Xml到基於屬性值的java解析到一個單獨的變量

我需要解析所有EMPLOYEE元素與屬性PERMANENT="Y"在一個構件和另一個構件屬性PERMANENT="N"

<EMPLOYEE PERMANENT="Y"> 
    <DETAILS NAME="AA" ID="1" AGE="28" /> 
    <DETAILS NAME="BB" ID="2" AGE="29" /> 
</EMPLOYEE> 
<EMPLOYEE PERMANENT="N"> 
    <DETAILS NAME="CC" ID="3" AGE="28" /> 
    <DETAILS NAME="DD" ID="4" AGE="29" /> 
</EMPLOYEE> 

的Java

public class Employee 
{ 

    // @XStreamAlias("EMPLOYEE") and attribute PERMANENT="Y" 
    private Details permanentEmployee; 

    // @XStreamAlias("EMPLOYEE") and attribute PERMANENT="Y" 
    private Details tempEmployee; 

} 

我不知道如何做到這一點。

有人可以幫助我。

回答

0
import java.io.File; 
import java.io.IOException; 

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

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


public class ParseXML { 

    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException { 
     DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
     Document doc = docBuilder.parse (new File("D:/test.xml")); 

     NodeList elt = doc.getElementsByTagName("EMPLOYEE"); 
     for (int k = 0; k < elt.getLength(); k++) { 
      Node firstNode3 = elt.item(k); 
      Element elt1 = (Element) firstNode3; 
      String att=elt1.getAttribute("PERMANENT"); 
      System.out.println("\n\nPERMANENT: "+att); 

      NodeList nodes = elt1.getElementsByTagName("DETAILS"); 
      for(int i=0;i<nodes.getLength();i++){ 
       Node childNode = nodes.item(i); 
       Element elt2 = (Element) childNode; 
       System.out.println("---"+elt2.getNodeName()); 
       System.out.println("NAME:"+elt2.getAttribute("NAME")); 
       System.out.println("ID:"+elt2.getAttribute("ID")); 
       System.out.println("AGE:"+elt2.getAttribute("AGE")); 
      } 

     }//end of for 
    }