gpt4 book ai didi

java - 使用 xstream 填充列表值

转载 作者:行者123 更新时间:2023-12-02 07:32:49 25 4
gpt4 key购买 nike

我正在使用 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>

基本上,在对象标签下可以有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;
}
}

使用此代码,我可以填充 ParentResponseObject 类中的 responseObjects 列表。但是,ResponseObject 中的属性列表始终为 null 并且未填充,即使我在这两种情况下使用相同的技术。我调试了很多,但找不到任何东西。恳请您的帮助和指导。

最佳答案

添加对隐式的引用,它将起作用

  @XStreamImplicit(itemFieldName="Object")
List<ResponseObject> responseObjects = new ArrayList<ResponseObject>();

@XStreamImplicit(itemFieldName="Property")
List<Properties> properties = new ArrayList<Properties>();

关于java - 使用 xstream 填充列表值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12702753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com