2013-02-09 9 views
8

Come analizzare e creare java pojo per sotto xml in modo efficiente? Si prega di suggerire qualsiasi parser efficiente.Parse XML TO JAVA POJO in modo efficiente

formato XML è

<?xml version="1.0" encoding="utf-8"?> 
<CCMainRootTag ID="12"> 
    <Header TableName="TableName" TableVersion="12" TableID="12" CreatedDate="2013-02-09T15:35:33" CreatedByUserName="ABC" CreatedBySystem="ABC" /> 
    <ClassPrimary ID="12" Code="Y" DescriptionDK="DK language " DescriptionUK="" DefDK="" DefUK="" IFDGUID=""> 
    <ObjectClass ID="12" Code="YA" DescriptionDK="DK Language" DescriptionUK="" DefDK=""  DefUK="" IFDGUID=""> 
     <Synonym> 
     <Concept Description="Description" Language="DK" /> 
     <Concept Description="" Language="UK" /> 
     <Concept Description="Description" Language="DK" /> 
     <Concept Description="" Language="UK" /> 
     <Concept Description="Description" Language="DK" /> 
     <Concept Description="" Language="UK" /> 
     <Concept Description="Description" Language="DK" /> 
     <Concept Description="" Language="UK" /> 
     </Synonym> 
    </ObjectClass> 
    <ObjectClass ID="12" Code="YB" DescriptionDK="DK Language" DescriptionUK="" DefDK="" DefUK="" IFDGUID=""> </ObjectClass> 
    <ObjectClass ID="12" Code="YC" DescriptionDK="DK Language" DescriptionUK="" DefDK="" DefUK="" IFDGUID=""> </ObjectClass> 
    <ObjectClass ID="12" Code="YD" DescriptionDK="DK language" DescriptionUK="" DefDK="" DefUK="" IFDGUID=""> </ObjectClass> 
    </ClassPrimary> 
</CCMainRootTag> 

ho già utilizzare questa Link ma hanno un rallentamento delle prestazioni e avendo problema did't POJO valido.

Voglio parser che mi fornisce java pojo diretta in modo efficiente.

risposta

10

È possibile utilizzare JAXB per convertire XML in POJO Java. Ma prima di finalizzare la soluzione check this site per il confronto delle prestazioni.

+0

HI CuriousMind, Ma nel mio caso gli attributi XML sarà variabili di classe. Vedere questo ad esempio. TableName = "TableName" TableVersion = "12" TableID = "12" CreatedDate = "2013-02-09T15: 35: 33" CreatedByUserName = "ABC" CreatedBySystem = "ABC" /> Come posso definire xml pojo per questo tipo di struttura.? – DroidEngineer

+0

JAXB fornisce annotazioni per associare gli attributi alle variabili di classe. Controllare il sito di documentazione JAXB per ulteriori dettagli. – CuriousMind

+0

Utilizza semplicemente https://code.google.com/p/pojoxml/ –

4

Per chi cerca il codice JAXB per convertire XML per oggetto Java:

//Convert xml to String first 
Element partyLoaderRequest; // your xml data 
String xmlString = new XMLOutputter().outputString(partyLoaderRequest); 
InputStream is = new ByteArrayInputStream(xmlString.getBytes()); 
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
Document document = docBuilder.parse(is); 
org.w3c.dom.Element varElement = document.getDocumentElement(); 
JAXBContext context = JAXBContext.newInstance(Person.class); 
Unmarshaller unmarshaller = context.createUnmarshaller(); 
JAXBElement<Person> loader = unmarshaller.unmarshal(varElement, Person.class); 
Person inputFromXml = loader.getValue(); 

mentre persona ha appropriate annotazioni XML:

@XmlRootElement(name="Person") 
public class CimbWlAdminUserAmendInput { 
    @XmlElement(name="companyName",required=true,nillable=false) 
    private String companyName; 
    ... 
    //setters getters 
    @XmlTransient 
    public String getCompanyName() { 
     return companyName; 
    } 

    public void setCompanyName(String companyName) { 
     this.companyName = companyName; 
    } 
}