Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.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 使用jaxb解析复杂的xml属性并创建对象模型_Java_Xml_Jaxb_Jaxb2 - Fatal编程技术网

Java 使用jaxb解析复杂的xml属性并创建对象模型

Java 使用jaxb解析复杂的xml属性并创建对象模型,java,xml,jaxb,jaxb2,Java,Xml,Jaxb,Jaxb2,我有一个XML,看起来像这样 <?xml version="1.0" ?> <subjectAreaGroup> <subjectArea> <myObject> <layout columnNum="3" /> <column name="ID" value="101"/> <column name="NAME" valu

我有一个XML,看起来像这样

<?xml version="1.0" ?>
<subjectAreaGroup>
    <subjectArea>
        <myObject>
            <layout columnNum="3" />
            <column name="ID" value="101"/>
            <column name="NAME" value="xyz"/>
            <column name="AGE" value="25" />
        </myObject>
    </subjectArea>
</subjectAreaGroup>

在这里,我必须处理复杂的属性并创建对象模型。你能帮我解决这个问题吗?

你可以用。GsonXml是一个小型库,允许使用googlegson库进行XML反序列化。其主要思想是将XML pull解析器事件流转换为JSON令牌流。

您可以使用JAXB编组将对象转换为XML,反之亦然。例如,将客户对象转换为XML文件

@XmlRootElement
public class Customer {

    String name;
    int age;
    int id;

    public String getName() {
        return name;
    }

    @XmlElement
    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    @XmlElement
    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    @XmlAttribute
    public void setId(int id) {
        this.id = id;
    }

}



try {
        Customer customer = new Customer();
        customer.setId(100);
        customer.setName("student");
        customer.setAge(29);
    File file = new File("C:\\file.xml");
    JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();


        // output pretty printed


jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);


    jaxbMarshaller.marshal(customer, file);
    jaxbMarshaller.marshal(customer, System.out);

      } catch (JAXBException e) {
    e.printStackTrace();
      }

}
try {

        File file = new File("C:\\file.xml");
        JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);

        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
        System.out.println(customer);

      } catch (JAXBException e) {
        e.printStackTrace();
      }
输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
    <age>29</age>
    <name>student</name>
</customer>

你能提供更多关于对象模型的细节吗谢谢你的帖子,但我要求只使用Jaxb来实现这一点。我必须解析till列元素,并构建一个属性列表,包括ID、NAME、AGE以及value属性。我试过你的解决办法,但没有解决问题。