解析XML和Java对象 - 解析属性和值一起

问题描述:

我有一个XML类似于下面的东西,解析XML和Java对象 - 解析属性和值一起

<STANDARD id="1234"> <TOPIC id="111" state_num="ABC111">Reading <TOPIC topicId="222" parent_id="111">Key Ideas and Details</TOPIC> <TOPIC topicId="333" parent_id="111">Key values</TOPIC> </TOPIC> </STANDARD>

Java对象下面类似,

@XStreamAlias("STANDARD") 
public class STANDARD { 
    @XStreamAsAttribute 
    protected String id; 

    @XStreamImplicit 
    protected List<MSS.STANDARD.TOPIC> topic; 

    @XStreamAlias("TOPIC") 
    @XStreamConverter(value=ToAttributedValueConverter.class, strings={"value"}) 
    public static class TOPIC { 

     @XStreamAsAttribute 
     protected String topicId; 

     @XStreamAsAttribute 
     protected String parent_id; 

     @XStreamAsAttribute 
     protected String value; 

     @XStreamImplicit 
     protected List<STANDARD.TOPIC> topic; 
    } 
} 

现在所面临的问题在下文中,

  1. 具有“_”键的属性,i父母标识未被解析。

  2. 如果我使用XStreamConverter注释,则解析TOPIC的值,但是不会解析存在于TOPIC内的子TOPIC元素。

  3. 如果我删除了XStreamConverter注释,可以通过添加隐式注释来获取子主题。但我想同时解析这些值以及子元素。

为1.解决方案:

@XStreamAsAttribute 
@XStreamAlias("parent_id") 
protected String parentId;