Java JAXB中的对象

Java JAXB中的对象,java,xml,jaxb,Java,Xml,Jaxb,我有一个XML,如下所示 <rootElement> <element1>data</element1> <element2 attribute1="value1" attribute2="value2"> <inner_element>2</inner_element> </element2> </rootElement> 我想允许用户在中输入任何类

我有一个XML,如下所示

<rootElement>
    <element1>data</element1>    
    <element2 attribute1="value1" attribute2="value2">
        <inner_element>2</inner_element>
    </element2>
</rootElement>
我想允许用户在
中输入任何类型的值(字符串、整数、双精度)


在Java中,我能够读取其他元素
&
,但是,我得到的
值为
null
。知道怎么做吗?

在InnerElement类上尝试@XmlValue而不是@XmlAnyElement。 还可以使用此XSD解析为字符串而不是对象

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="rootElement">
        <xs:complexType>
            <xs:sequence>
                <xs:element type="xs:string" name="element1"/>
                <xs:element name="element2">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element type="xs:anyType" name="inner_element"/>
                        </xs:sequence>
                        <xs:attribute type="xs:string" name="attribute1"/>
                        <xs:attribute type="xs:string" name="attribute2"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>
这个ObjectFactory类

package com.test.jaxb;

import javax.xml.bind.annotation.XmlRegistry;

@XmlRegistry
public class ObjectFactory {

    public ObjectFactory() {
    }

    public RootElement createRootElement() {
        return new RootElement();
    }

    public RootElement.Element2 createRootElementElement2() {
        return new RootElement.Element2();
    }

}

不起作用,我已经把一个字段@XmlValue对象值;在内部元素类中。(获取错误)但是,每当我放置Integer/Double/String时,只要数据输入正确,它就会工作。该元素中允许哪些值?听起来您需要将其解析为一个字符串以容纳任何值,然后手动将其解析为一个数字(如果是oneI),我希望允许Integer、String、Double等类型的值。。将使用字符串实现它,然后将其转换回适当的类型。我想string会处理xml中的所有类型。您能生成xml的XSD shema吗
package com.test.jaxb;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "element1",
    "element2"
})
@XmlRootElement(name = "rootElement")
public class RootElement {

    @XmlElement(required = true)
    protected String element1;
    @XmlElement(required = true)
    protected RootElement.Element2 element2;

    public String getElement1() {
        return element1;
    }

    public void setElement1(String value) {
        this.element1 = value;
    }

    public RootElement.Element2 getElement2() {
        return element2;
    }

    public void setElement2(RootElement.Element2 value) {
        this.element2 = value;
    }

    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlType(name = "", propOrder = {
        "innerElement"
    })
    public static class Element2 {

        @XmlElement(name = "inner_element", required = true)
        protected Object innerElement;
        @XmlAttribute(name = "attribute1")
        protected String attribute1;
        @XmlAttribute(name = "attribute2")
        protected String attribute2;

        public Object getInnerElement() {
            return innerElement;
        }

        public void setInnerElement(Object value) {
            this.innerElement = value;
        }

        public String getAttribute1() {
            return attribute1;
        }

        public void setAttribute1(String value) {
            this.attribute1 = value;
        }

        public String getAttribute2() {
            return attribute2;
        }

        public void setAttribute2(String value) {
            this.attribute2 = value;
        }

    }

}
package com.test.jaxb;

import javax.xml.bind.annotation.XmlRegistry;

@XmlRegistry
public class ObjectFactory {

    public ObjectFactory() {
    }

    public RootElement createRootElement() {
        return new RootElement();
    }

    public RootElement.Element2 createRootElementElement2() {
        return new RootElement.Element2();
    }

}