2016-08-13 108 views
0

我試圖創建此XML文件POJO,但沒有成功註釋類的SimpleXML

<?xml version="1.0" encoding="UTF-8"?> 
<PCOWEB t="2010-03-22 11:48 "> 
<PCO> 
    <INTEGER_R> 
     <O I="I00000" V="73"/> 
     <O I="I00001" V="21"/> 
     <O I="I00002" V="0"/> 
    </INTEGER_R> 
    <INTEGER_RW> 
     <O I="H00200" V="5050"/> 
     <O I="H00201" V="0"/> 
     <O I="H00202" V="0"/> 
     <O I="H00203" V="0"/> 
    </INTEGER_RW> 
    <DIGITAL_R> 
     <O I="D00000" V="0"/> 
     <O I="D00001" V="1"/> 
     <O I="D00002" V="0"/> 
     </DIGITAL_R> 
    <DIGITAL_RW> 
     <O I="C00200" V="0"/> 
     <O I="C00201" V="0"/> 
    </DIGITAL_RW> 
</PCO> 

我開始與

@Root(name = "PCOWEB") //root of the xml file 
public class PCOWEB { 
    @Root(name = "PCO") 
    public class PCO { 

     }) 

    } 

    @Element 
    private String t; 
} 

但是我收到一個錯誤: 屬性't'在第一行pojo沒有匹配

+0

是POJO的要求對接項目?這可以通過dom sax或vtd-xml很容易地實現......所有不帶schema架構的負擔? –

回答

0

首先,你的XML文檔是無效,因爲它最後缺少結束標記</PCOWEB>

Java映射類有幾個問題。

  • 粘貼代碼的第6行有一個語法錯誤,在右括號(可能是複製和粘貼問題)。
  • 您正在使用@Element註釋t。但是,在您的XML文檔中,t不是元素,而是PCO元素的屬性
  • You cannot use inner classes with Simple XML。不過,您可以使用靜態嵌套類(參見loose object mapping)。

以此爲開端:

import org.simpleframework.xml.*; 

@Root(strict = false) // indicates that this is a loose (partial) mapping 
public class PCOWEB { 

    @Root(strict = false) 
    private static class PCO { 
    } 

    @Attribute 
    private String t; 

    @Element(name = "PCO") 
    private PCO pco; 

} 
0

感謝您的幫助,在最後它看起來像這樣:

@Root 
public class PCOWEB { 

    @Attribute (name="t") 
    private String time; 

    @Element 
    private PCO PCO; 
} 

public class PCO { 

    @ElementList 
    private List<Entry> INTEGER_R; 
    @ElementList 
    private List<Entry> INTEGER_RW; 
    @ElementList 
    private List<Entry> DIGITAL_R; 
    @ElementList 
    private List<Entry> DIGITAL_RW; 
} 

@Element (name="O") 
public class Entry { 
    @Attribute (name="I") 
    private String key; 
    @Attribute (name="V") 
    private String value; 
}