当前位置: 首页 > 知识库问答 >
问题:

使用绑定器将xml与命名空间解组时,jaxb-moxy出现问题

戈建白
2023-03-14

我使用jaxb moxy散集一个xml从活页夹,但它给出了例外:一个描述符与默认根元素bean没有找到在项目中。

要解组的Xml文件-

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<beans xmlns="http://www.example.org/package">
</beans>

Beans.java-

@XmlRootElement(namespace="http://www.example.org/package")
public class Beans {

String name = "ss";

@XmlElement
public String getName() {
    return name;
}

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

}

package-info.java

@XmlSchema(
    namespace="http://www.example.org/package",
    elementFormDefault=XmlNsForm.QUALIFIED)
package com.jaxb.test;


import javax.xml.bind.annotation.*;

主要类-

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        File xml = new File(
                "D:\\eclipse-jee-indigo-SR2\beans.xml");
        Document document = db.parse(xml);

        JAXBContext jc = JAXBContext.newInstance(Beans.class);



        Binder<Node> binder = jc.createBinder();

        Beans customer = (Beans)   jc.createBinder().unmarshal(document);//throws exception

     //Beans customer = (Beans) jc.createUnmarshaller().unmarshal(xml);This works
    //Beans customer = (Beans) jc.createUnmarshaller().unmarshal(document);Throws same exception

例外-

javax.xml.bind.UnmarshalException
- with linked exception:
[Exception [EclipseLink-25008] (Eclipse Persistence Services - 2.4.1.v20121003-   ad44345): org.eclipse.persistence.exceptions.XMLMarshalException
Exception Description: A descriptor with default root element beans was not found in the project]
at  org.eclipse.persistence.jaxb.JAXBUnmarshaller.handleXMLMarshalException(JAXBUnmarshaller.java:1014)
at  org.eclipse.persistence.jaxb.JAXBUnmarshaller.unmarshal(JAXBUnmarshaller.java:199)
at com.jaxb.test.JaxbTest.main(JaxbTest.java:43)

共有2个答案

凤凡
2023-03-14

解决了它。我没有使用软件包信息.java而是使用了 bindins.xml .

豆类结合.xml-

<?xml version="1.0" encoding="UTF-8"?>
<xml-schema element-form-default="QUALIFIED" namespace="http://www.example.org/package">
    <xml-ns prefix="" namespace-uri="http://www.example.org/package" />
</xml-schema>

<java-types>
    <java-type name="Beans">
    <xml-root-element name="beans"/>
        <java-attributes>

        </java-attributes>
    </java-type>
</java-types>
吕和风
2023-03-14

默认情况下,DocumentBuilderFactory不知道命名空间。这意味着您传递给MOXy的文档将不会像预期的那样限定命名空间。您可以通过在代码中添加以下内容来解决此问题:

dbf.setNamespaceAware(true);
 类似资料:
  • 在JAXB将xml文件解组以请求对象并将其发送给servis时,我遇到了一些问题。 它返回错误而不是正确的响应-。 我正在使用下一个模式: 带有测试日期的xml文件= 以下是源xml文件: 我使用JAXB解析并转换到我的RQ对象。 它返回奇怪的错误而不是响应。 我只是将未解析的请求写入xml文件: 它有很多讨厌的ns1:nameprefix。 我想知道如何在没有冗余前缀的情况下解组?

  • 当我试图使用包含名称空间的JAXB将xml转换为Java对象时,会发生错误。 示例示例:' Zeta Walnes ` 我需要忽略名称空间

  • 我有下面的,我试图使用JAXB将其转换为Java对象。我在这里得到空值,请指导我这里缺少什么或做错了什么。 我不熟悉 JAXB 和命名空间

  • 在不使用getter和setter的情况下,JAXB可以正确地解组所提供的JSON。 null和“null”是完全不同的东西,但是我不想在POJO中包含这个字段,并且我必须忽略这些null值。 编辑

  • 问题内容: 这是我的xml,需要将其转换为Java。我用过jaxb 并引发以下异常javax.xml.bind.UnmarshalException:意外元素(uri:“ http://www.ae.com/Event/Load ”,本地:“ Order”)。期望的元素是<{} lm:Order> 这是我的解组代码 订购Pojo班 您能否也帮助我阅读,当前正在读取文件,需要读取为XML Strin

  • 我有情况, 有一个sample.xsd(旧版本-没有命名空间)。为同一个XSD文件使用XJC生成JAXB类。我得到了一个使用JAXB类基于XSD解封XML数据文件的示例。sample.xsd文件已更改(新版本-添加的命名空间)。再次为新的XSD文件使用XJC生成JAXB类。该示例已更新,现在可以用于新的XSD文件 现在我有一个情况,我正在获取基于旧XSD的XML数据文件,我想使用更新的示例文件来解