Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XStream不转换xml标记_Java_Xml_Xstream - Fatal编程技术网

Java XStream不转换xml标记

Java XStream不转换xml标记,java,xml,xstream,Java,Xml,Xstream,我有一个xml。我想转换成object,xstream可以很好地转换所有标记,除了其中一个它给出的null 你知道这个问题吗 xml: 当我检查对象person时,所有变量都正常,但address总是空的 我试过这个: _xstream.aliasType("person", PersonType.class); _xstream.aliasType("address", AddressType.class); _xstream.aliasField("city", AddressType.cl

我有一个xml。我想转换成object,xstream可以很好地转换所有标记,除了其中一个它给出的null

你知道这个问题吗

xml:

当我检查对象person时,所有变量都正常,但address总是空的

我试过这个:

_xstream.aliasType("person", PersonType.class);
_xstream.aliasType("address", AddressType.class);
_xstream.aliasField("city", AddressType.class, "city");
_xstream.aliasField("country", AddressType.class, "country");

但还是不行

在这种情况下,别名的使用是多余的。XStream将自动转换字段的名称

无论如何,你的地址似乎是一个嵌套类型。您对两个别名使用相同的类型:

_xstream.aliasType("person", PersonType.class);
_xstream.aliasType("address", PersonType.class);
应该是

_xstream.aliasType("address", AddressType.class);
用于地址别名。

Java代码:

 @XStreamAlias("person")
 public class Person {

 @XStreamAlias("name")
 private String Name;

 @XStreamAlias("age")
 private long Age;

 @XStreamImplicit(itemFieldName = "address")
 private List addresses = new ArrayList();
 }

 @XStreamAlias("adress")
 public class Address{

 @XStreamAlias("city")
 private String City;

 @XStreamAlias("country")
 private String Country;
 }
主要代码:

FileReader reader = new FileReader("file.xml"); // load file

XStream xstream = new XStream();
xstream.processAnnotations(Person.class);
xstream.processAnnotations(Address.class);

Person person = (Person) xstream.fromXML(reader);
我相信在你们班里,地址是指对象地址。如果是这样,您需要这样做:

Person.java

public class Person{
private String name;
    private int age;
    private Address address;
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;}
    public String getcity(){
        return address.getCity();
    }
    public String getCountry(){
        return address.getCountry();
    }
}

Address.java

public class Address {
    private String city;
    private String country;
    public String getCity(){
        return city;
    }
    public String getCountry(){
        return country;
    }
}

JAVA CODE

FileReader xmlReader = new FileReader("file.xml"); // load file

XStream stream = new XStream(new StaxDriver());
stream.alias("person",Person.class);//Since in your xml file `person` is tag

Person person = (Person) stream.fromXML(xmlReader);

System.out.println("Name:"+person.getName()+"\nAge:"+person.getAge()+
           "\nCity:"+person.getCity()+"\nCountry:"+person.getCountry();

请编辑您的问题,并向我展示所涉及的课程地址类型和个人类型
FileReader reader = new FileReader("file.xml"); // load file

XStream xstream = new XStream();
xstream.processAnnotations(Person.class);
xstream.processAnnotations(Address.class);

Person person = (Person) xstream.fromXML(reader);
Person.java

public class Person{
private String name;
    private int age;
    private Address address;
    public String getName(){
        return name;
    }
    public int getAge(){
        return age;}
    public String getcity(){
        return address.getCity();
    }
    public String getCountry(){
        return address.getCountry();
    }
}

Address.java

public class Address {
    private String city;
    private String country;
    public String getCity(){
        return city;
    }
    public String getCountry(){
        return country;
    }
}

JAVA CODE

FileReader xmlReader = new FileReader("file.xml"); // load file

XStream stream = new XStream(new StaxDriver());
stream.alias("person",Person.class);//Since in your xml file `person` is tag

Person person = (Person) stream.fromXML(xmlReader);

System.out.println("Name:"+person.getName()+"\nAge:"+person.getAge()+
           "\nCity:"+person.getCity()+"\nCountry:"+person.getCountry();