2016-11-21 214 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