2012-07-26 6 views
1

Quelqu'un peut-il suggérer un morceau de code, pour convertir xml en java en utilisant jaxb. Mon look fichier xml commeParsing xml complexe à java en utilisant jaxb

 <Customer> 
    <Operation>Sample</Operation> 
    <head> 
     <sub> 
      <value> 
       <att> 
        <req> 
         <name>sample</name> 
         <value> 
          <string> sample values </string> 
         </value> 
        </req> 
       </att> 
      </value> 
     </sub> 
     <sub> 
      <value> 
       <att> 
        <req> 
         <name>var</name> 
         <value> 
          <string>var value</string> 
         </value> 
        </req> 
       </att> 
      </value> 
     </sub> 
    </head> 
</Customer> 

J'ai utilisé le morceau de code suivant, mais je reçois des valeurs nulles

File file = new File("C:\\xml.xml"); 
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file); 
System.out.println(customer.name); 
System.out.println(customer.string); 

Mon résultat attendu devrait être comme

Sample 
sample values 
var 
var value 
+0

Vous pouvez être intéressé par ce qui suit: http://blog.bdoughan.com/2010 /09/xpath-based-mapping-geocode-example.html –

Répondre

0

Comment puis-je obtenir plusieurs valeurs par le même nom de tag. Par exemple, si le fichier XML est comme

fichier Xml

<customer> 
     <sample> 
     <name>name</name> 
     <value> 
     <string> value </string> 
     </value> 
     </sample> 
     <sample> 
     <name>name</name> 
     <value> 
     <string> value </string> 
     </value> 
     </sample> 
</customer> 

J'utilise le code suivant

File file = new File("C:\\sample.xml"); 
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file); 
System.out.println(customer.value.string); 
System.out.println(customer.sample.name);