java - 如何解决错误 'nexpected element (uri:"“,本地 :"Create"”。预期元素是 <{}Create>'?

标签 java xml jaxb unmarshalling

<分区>

我的 JAXB 有问题:

<element name="create">
    <complexType>
        <sequence>
            <element name="name" type="string"></element>
        </sequence>
    </complexType>
</element>

我的 XML:

<Create>
<name> coco </name>
</Create>

我的Java:

JAXBContext context = JAXBContext.newInstance("MyPackage");
 Unmarshaller decodeur =    context.createUnmarshaller();
System.out.println("text : " + message);
msgObject = decodeur.unmarshal(sr);  
     if (msgObject instanceof Create)

{
      System.out.println(" action");
}

        
                

我有这个:

unexpected element (uri:"", local:"Create"). Expected elements are <{http://www.example.org/XSD_Maths}create>

我的代码停在这一行:

 msgObject = decodeur.unmarshal(sr);  

我的 XML 是否正常或有问题?我不确定为什么会收到此错误。

最佳答案

您的 XML 模式可能具有如下所示的 schema 标记。

<?xml version="1.0" encoding="UTF-8"?>
<schema 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/XSD_Maths" 
    xmlns:tns="http://www.example.org/XSD_Maths" 
    elementFormDefault="qualified">

因为它指定了 http://www.example.org/XSD_MathstargetNamespace。您的 XML 需要如下所示:

<create xmlns="http://www.example.org/XSD_Maths">
    <name> coco </name>
</create>

关于从 DOM 解码的注意事项

如果您从 DOM DocumentElement 中解码,请确保您使用的 DOM 解析器是命名空间感知的。这是通过在 DocumentBuilderFactory 上设置以下标志来完成的。

documentBuilderFactory.setNamespaceAware(true);

更多信息

下面是我博客上的一篇文章的链接,我在其中更深入地介绍了 JAXB 和命名空间。

关于java - 如何解决错误 'nexpected element (uri:"“,本地 :"Create"”。预期元素是 <{}Create>'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23205243/

相关文章:

java - 获取一系列List<Object>列表

java - 删除一行中重复的相同字符

xml - 通过 XSLT 使用 CDATA 部分包围 XML 元素

PHP Foreach 一个带有返回值的函数并插入到数据库中

java - 使用 Java 转换 XML 文件

java - JAXB @XmlElements,不同类型但名称相同?

java - jaxb 使用零参数构造函数进行解码

java - VBox 将填充宽度设置为 true 特定于元素

java - 从 XJC 输出中省略 @XmlSeeAlso

java - Apache Commons Net FTPClient 默认使用被动模式还是主动模式?