我对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");
}
我有这个:
意外元素(uri:“”,local:“Create”)。预期元素为&lt; {{{}}}}创建&gt;
我的代码停止了这个:
msgObject = decodeur.unmarshal(sr);
我的xml好吗?你能帮帮我吗,因为我不知道是什么问题
答案 0 :(得分:12)
您的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">
因为它指定了targetNamespace
http://www.example.org/XSD_Maths
。您的XML需要如下所示:
<create xmlns="http://www.example.org/XSD_Maths">
<name> coco </name>
</create>
如果您从DOM Document
或Element
解组,请确保您使用的DOM解析器具有名称空间感知功能。这是通过在DocumentBuilderFactory
上设置以下标志来完成的。
documentBuilderFactory.setNamespaceAware(true);
下面是我博客上文章的链接,我将更深入地了解JAXB和命名空间。