2016-11-21 65 views
0

我在使用Jackson解析XML到POJO時遇到了問題。我已經閱讀了所有關於使用類將XML解析爲POJOS的所有描述,但是我一直得到Null指針或不是END元素警告。我非常困惑,任何幫助都非常感謝。如何使用重複的XML標籤將XML解析爲使用Jackson的POJO?

輸入XML是

    <row>    
        <entry align="right" valign="top">20</entry> 
        <entry align="right" valign="top">1A</entry> 
        <entry valign="top">SData</entry> 
        <entry align="center" valign="top">2</entry> 
        <entry valign="top">binary</entry> 
        <entry valign="top">Java enterprise</entry> 
       </row> 

我使用的碼是:

static void testSmallXml(){ 
    String big = null; 
    try 
    { 
     big = readFileToString("other/testXML/NewFile.xml"); 
    } catch (IOException e) 
    { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    XmlMapper xmlMapper = new XmlMapper(); 


    String small = big.substring(big.lastIndexOf("<row>"), big.lastIndexOf("</row>")+8); 

     try 
     { 
      rows in = xmlMapper.readValue(small, rows.class); 
      System.out.println(in.entries[0].value); 
     } catch (IOException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }   

     System.out.println(small); 

} 

和我的POJO類是

@JacksonXmlRootElement(localName = "row") 
@JsonIgnoreProperties(ignoreUnknown = true) 
public static class rows{ 
    @JacksonXmlProperty(localName = "entry") 
    public entry[] entries; 
} 

@JacksonXmlRootElement(localName = "entry") 
@JsonIgnoreProperties(ignoreUnknown = true) 
public static class entry{ 

    @JacksonXmlProperty(isAttribute = true) 
    private String align; 

    @JacksonXmlProperty(isAttribute = true) 
    private String valign; 

    @JacksonXmlText 
    public String value; 

} 

我不斷收到一個空指針異常的
行[ 「進入」] - > [對象] [2])

回答

0

試試這個:

@JacksonXmlRootElement(localName = "row") 
public static class rows { 
    @JacksonXmlElementWrapper(useWrapping=false) 
    @JacksonXmlProperty(localName = "entry") 
    public entry[] entries; 
} 

public static class entry { 
    @JacksonXmlProperty(isAttribute = true) 
    private String align; 

    @JacksonXmlProperty(isAttribute = true) 
    private String valign; 

    @JacksonXmlText 
    public String value; 
} 
+0

嗨特皮奇,非常感謝。最終工作。我想知道你是否有任何想法爲下一步做好準備?如在 – Cmac199

+0

A旁註:如果下次爲您的問題添加一個'java'標籤,您將得到更快的幫助。 – teppic