Java JAXB-umarshall异常

Java JAXB-umarshall异常,java,xml,jaxb,Java,Xml,Jaxb,我是Jaxb新手,在解析简单XML时遇到问题。所讨论的XML如下所示: <tables> <table id="1" > <schema>validator_test</schema> <name>test1</name> <rowCountToValidate>6</rowCountToValidate> <columnTypeC

我是Jaxb新手,在解析简单XML时遇到问题。所讨论的XML如下所示:

<tables>
    <table id="1" >
    <schema>validator_test</schema>
        <name>test1</name>
        <rowCountToValidate>6</rowCountToValidate>
        <columnTypeCheckRequired>FALSE</columnTypeCheckRequired>
        <additionalColumns>column1,column2</additionalColumns>
    </table>
    <table id="2">
    <schema>validator_test</schema>
        <name>validate_external1</name>
        <rowCountToValidate>2</rowCountToValidate>
        <columnTypeCheckRequired>FALSE</columnTypeCheckRequired>
        <additionalColumns>column1,column2</additionalColumns>
    </table>
    <table id="3">
    <schema>validator_test</schema>
        <name>Test_View1</name>
        <rowCountToValidate>2</rowCountToValidate>
        <columnTypeCheckRequired>FALSE</columnTypeCheckRequired>
        <additionalColumns>column1,column2</additionalColumns>
    </table>
</tables>
然而,我发现以下例外情况:-

`JAXB unmarshalling exception; nested exception is javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"tables"). Expected elements are <{tables}table>`
`JAXB解组异常;嵌套异常为javax.xml.bind.UnmarshalException:意外元素(uri:,local:“tables”)。预期的要素是`

如果有人能指出我所犯的错误,我将不胜感激。我对这一点还不熟悉,并不真正能够理解jaxb是如何工作的

您需要使用
@XmlRootElement(name=“Tables”)
创建类
,该类必须包含
字段,类型为
表信息


当您解组示例xml时,您需要将
类传递给解组器。

您需要使用
@XmlRootElement(name=“Tables”)
创建类
,并且该类必须包含类型为
TableInfo
字段

 @XmlRootElement(name = "table")
 <tables>
 <table id="1" >
当您解组示例xml时,需要将
类传递给解组器。

@XmlRootElement(name=“table”)
 @XmlRootElement(name = "table")
 <tables>
 <table id="1" >
以下是针对上述问题的2种解决方案:

  • 您需要使用XSD生成类
  • 您需要根据所需的XML生成类: 在XML中,表位于表内部,所以表应该是根元素 并且表应该是表类中列表的形式。

    @XmlRootElement(name=“table”)
    
    以下是针对上述问题的2种解决方案:

  • 您需要使用XSD生成类
  • 您需要根据所需的XML生成类: 在XML中,表位于表内部,所以表应该是根元素
    表应该是tables类中列表的形式。

    在代码中,根元素是@XmlRootElement(name=“table”),而在XML文件中是“tables”

    建议您使用xjc命令自动构建JavaPOJO类

    xjc-d-p sample.xsd -定义生成的类在文件系统中的存储位置,
    -p在代码根元素中定义要使用的包是@XmlRootElement(name=“table”),而在XML文件中是“tables”

    建议您使用xjc命令自动构建JavaPOJO类

    xjc-d-p sample.xsd -定义生成的类在文件系统中的存储位置,
    -p定义要使用的包

    首先为XML获取
    XSD
    ,然后从该
    XSD
    生成POJO,然后进行XML的取消/编组。仅供参考。。您的根元素应该是
    tables
    not table
    @Swaraj,不需要XSD及其编译。您可以手工编写POJO并对其进行注释,这是正确的。我是按照传统的方式来做的。首先为XML获取
    XSD
    ,然后从该
    XSD
    生成POJO,然后进行XML的取消/编组。仅供参考。。您的根元素应该是
    tables
    not table
    @Swaraj,不需要XSD及其编译。您可以手工编写POJO并对其进行注释,这是正确的。我走的是传统的方式。