2013-02-09 14 views
8

Java pojo'yu xml'nin altında verimli bir şekilde nasıl ayrıştırılır ve oluşturulur? Lütfen herhangi bir verimli ayrıştırıcıyı önerin.XML'yi JAVA POJO'yu verimli şekilde ayrıştırma

XML formatı

<?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> 

Zaten bu Link kullanmak ama yavaş bir performansa sahip ve sorunlu olan geçerli pojo did't olduğunu.

Doğrudan java pojo'yu verimli bir şekilde sağlayan ayrıştırıcıyı kullanmak istiyorum.

cevap

10

XML'i Java POJO'larına dönüştürmek için JAXB'u kullanabilirsiniz. Ancak, performans karşılaştırması için check this site çözümünü sonuçlandırmadan önce. java nesneye xml dönüştürmek için JAXB kod arayanlar için

+0

HI CuriousMind, Ama benim durumumda xml nitelikleri olacaktır: Kişi düzgün bir XML açıklaması bulunmaktadır oysa

//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(); 

sınıf değişkenleri. Bkz. TableName = "TableName" TableVersion = "12" TableID = "12" CreatedDate = "2013-02-09T15: 35: 33" CreatedByUserName = "ABC" CreatedBySystem = "ABC" /> Nasıl xml pojo için tanımlayabilirim bu tür yapı. – DroidEngineer

+0

JAXB, nitelikleri Sınıf değişkenlerine bağlamak için ek açıklamalar sağlar. Daha fazla bilgi için JAXB dokümantasyon sitesine bakın. – CuriousMind

+0

https://code.google.com/p/pojoxml/ adresini kullanmanız yeterli –

4

:

@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; 
    } 
} 
İlgili konular