Java 使用xstream填充列表值
我正在使用Java 使用xstream填充列表值,java,xml,xml-parsing,xml-serialization,xstream,Java,Xml,Xml Parsing,Xml Serialization,Xstream,我正在使用Xstream阅读以下格式的xml <Objects> <Object Type="System.Management.Automation.Internal.Host.InternalHost"> <Property Name="Name" Type="System.String">ConsoleHost</Property> <Property Name="Version" Type="Sy
Xstream
阅读以下格式的xml
<Objects>
<Object Type="System.Management.Automation.Internal.Host.InternalHost">
<Property Name="Name" Type="System.String">ConsoleHost</Property>
<Property Name="Version" Type="System.Version">2.0</Property>
<Property Name="InstanceId" Type="System.Guid">7e2156</Property>
</Object>
</Objects>
控制台主机
2
7e2156
基本上,在对象标记下可以有n个对象类型,每个对象类型可以有n个属性标记。因此,我通过Java类和代码对其进行建模,如下所示
@XStreamAlias("Objects")
class ParentResponseObject {
@XStreamImplicit
List <ResponseObject>responseObjects = new ArrayList<ResponseObject>();
public String toString () {
return responseObjects.get(0).toString();
}
}
@XStreamAlias("Object")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "value" })
class ResponseObject {
@XStreamAsAttribute
String Type;
String value;
@XStreamImplicit
List <Properties> properties = new ArrayList<Properties>();
public String toString () {
return Type+" value is "+"List is "+properties+ value;
}
}
@XStreamAlias("Property")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "value" })
class Properties {
@XStreamAsAttribute
String Name;
@XStreamAsAttribute
String Type;
String value;
Properties (String name, String type,String value) {
this.Name = name;
this.Type = type;
this.value = value;
}
}
@XStreamAlias(“对象”)
类ParentResponseObject{
@XStreamImplicit
List responseObjects=new ArrayList();
公共字符串toString(){
返回responseObjects.get(0.toString();
}
}
@XStreamAlias(“对象”)
@XStreamConverter(value=ToAttributedValueConverter.class,strings={“value”})
类响应对象{
@XStreamAsAttribute
字符串类型;
字符串值;
@XStreamImplicit
列表属性=新的ArrayList();
公共字符串toString(){
返回类型+”值为“+”列表为“+属性+值;
}
}
@XStreamAlias(“财产”)
@XStreamConverter(value=ToAttributedValueConverter.class,strings={“value”})
类属性{
@XStreamAsAttribute
字符串名;
@XStreamAsAttribute
字符串类型;
字符串值;
属性(字符串名称、字符串类型、字符串值){
this.Name=Name;
this.Type=Type;
这个值=值;
}
}
使用此代码,我能够填充
ParentResponseObject
类中的responseObjects
列表。但是,ResponseObject
中的属性列表始终为null
,并且不会被填充,即使我在这两种情况下使用相同的技术。我调试了很多,但什么也找不到。我们请求您的帮助和指导。添加对它将起作用的隐含内容的引用
@XStreamImplicit(itemFieldName="Object")
List<ResponseObject> responseObjects = new ArrayList<ResponseObject>();
@XStreamImplicit(itemFieldName="Property")
List<Properties> properties = new ArrayList<Properties>();
@XStreamImplicit(itemFieldName=“Object”)
List responseObjects=new ArrayList();
@XStreamImplicit(itemFieldName=“Property”)
列表属性=新的ArrayList();