簡體   English   中英

XML到POJO映射

[英]XML to POJO Mapping

我有一項服務,它可以執行以下操作:

  1. 接收不同的XML請求
  2. 將它們轉換為JIBX生成的Java對象
  3. 將JIBX生成的Java對象映射到POJO
  4. 將POJO發送到另一個服務
  5. 收到POJO回復
  6. 將POJO映射回JIBX生成的Java對象
  7. 將JIBX生成的Java對象轉換回XML
  8. 將XML返回給客戶端。

我想使這個過程更有效率。 誰能建議如何? JIBX可以直接映射到我的POJO嗎?

是的,Jibx可以使用Jibx映射文件直接映射到您的POJO。 我認為下面的鏈接對於理解Jibx綁定非常有幫助。

Jibx簡介

在此,您需要一個庫,該庫位於注釋中的url(4shared.com)中。

 package com.xml.Sample.MainP;

    import java.io.File;
    import java.util.List;

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

    import org.w3c.dom.Document;

    import com.xml.Sample.Actions.XMLAction;
    import com.xml.Sample.Model.States;

    public class Retrieve {
        public static String XMLModelName = "com.xml.Sample.Model.States";
        private static String cities = "E:\\Webeclipseworkspace\\Samples\\src\\Srates.xml";

        public static void main(String[] args) {
            try {
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                File f = new File(cities);
                Document doc = db.parse(f);
                doc.getDocumentElement().normalize();
                XMLAction xmla = new XMLAction();
                List<States> listXML = xmla.readData(XMLModelName, doc);
                // System.out.println(listXML);
                String xmlData = xmla.writtingData(listXML);
                System.out.println(xmlData);

            } catch (Exception e) {
                // TODO: handle exception
                System.out.println(e);
            }
        }

    }



    package com.xml.Sample.Model;

    import com.xml.Sample.XMLAnn.XMLColumn;
    import com.xml.Sample.XMLAnn.XMLReport;

    @XMLReport(reportName = "row")
    public class Directory {

        private String city_id;
        private String city_name;
        private String state_id;

        @XMLColumn(label = "city_id")
        public String getCity_id() {
            return city_id;
        }

        public void setCity_id(String city_id) {
            this.city_id = city_id;
        }

        @XMLColumn(label = "city_name")
        public String getCity_name() {
            return city_name;
        }

        public void setCity_name(String city_name) {
            this.city_name = city_name;
        }

        @XMLColumn(label = "state_id")
        public String getState_id() {
            return state_id;
        }

        public void setState_id(String state_id) {
            this.state_id = state_id;
        }

    }

在這里,我創建了自己的庫,用於將Pojo類轉換為xml並將xml轉換為pojo類。

使用評論中的下方鏈接(4Shared.com)下載要為上述代碼添加的庫。

字符串(字符串中的XML)列出

1. FolderItem.java

<code>
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@XmlAccessorType(XmlAccessType.FIELD)
public class FolderItem {
    long itemId ;
       String itemName; 
       String itemType;
       String description;
       String[] tags;
       String path;
/* setters and getters 
   Annotations not required*/
}
</code>

2. FolderItems.java

<code>
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class FolderItems {
    @XmlElement
    private List<FolderItem> folderItem;
/* setter and getter */
}
</code>

3.測試-主要方法

<code>
class Test{
public static void main(String[] args) throws Exception {
   FolderItems f = (FolderItems)strToVo(content, FolderItems.class);
   System.out.println(f);
}
static Object strToVo(String content, Class c) throws JAXBException {
        JAXBContext jc = JAXBContext.newInstance(c);
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        return unmarshaller.unmarshal(new InputSource(new StringReader(content)));
    }
}
</code>

4.字符串中的XML

<code>

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<FolderItems>
    <folderItem>
        <description>Lapse notice invoice for additional interests/additional insureds</description>
        <itemId>480004439</itemId>
        <itemName>Lapse_Invoice_AI</itemName>
        <itemType>application/x-thunderhead-ddv</itemType>
        <path>/Templates/Billing Center/Lapse_Invoice_AI</path>
        <tags></tags>
    </folderItem>
</FolderItems>
</code>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM