java 6 中的 JAXB 未在编组 XML 文件中添加正确的名称空间前缀
我有一个模式,在模式元素中具有以下属性:
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:abc="http://abc.example.com" targetNamespace="http://abc.example.com" elementFormDefault="qualified" attributeFormDefault="unqualified">
我可以编译它并获取 java 类。使用这些类,我将数据填充到对象中并将其编组以获取 XML 文件。
但此编组文件中的 XML 元素没有前缀“abc”。
我在编组时使用 XMLStreamWriter.setPrefix 进行了一些调整,并且可以获得所有元素前缀为“abc”的 XML 文件。
现在,当我尝试解组同一个 XML 文件时,它会抛出错误:
[org.xml.sax.SAXParseException: 元素“abc:Name”的前缀“abc”未绑定。]
请帮助我如何让 JAXB知道 abc 是正确的前缀。
谢谢 普拉迪普
I have a schema with following attributes in schema element:
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:abc="http://abc.example.com" targetNamespace="http://abc.example.com" elementFormDefault="qualified" attributeFormDefault="unqualified">
I could compile it and get java classes. Using these classes, I filled in data in an object and marshalled it to get an XML file.
But the XML elements in this marshalled file is not having the prefix "abc".
I tweaked a little using XMLStreamWriter.setPrefix while marshalling, and I could get the XML file with all elements prefixed as "abc".
Now when I try to unmarshall the same XML file, it throws error saying :
[org.xml.sax.SAXParseException: The prefix "abc" for element "abc:Name" is not bound.]
Please help me in how to let JAXB know that abc is correct prefix.
Thank You
Pradeep
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
前缀的名称没有意义。它所做的只是在名称空间和属于该名称空间的标签之间建立连接。前缀是 abc 或 namespace01 或者因为使用默认命名空间而没有前缀并不重要。据我所知,您不能强制在 JAXB 中使用前缀或前缀的特定名称。
The name of the prefix is meaningless. All it does is make a connection between a namespace and the tags that belong to that namespace. Whether the prefix is abc or namespace01 or there is no prefix because the default namespace is used doesn't matter. As far as I know you can't force the usage of a prefix or the specific name of a prefix in JAXB.
在下面的文章中,我演示了如何使用 JAXB RI 中的
NamespacePrefixMapper
以及带有 EclipseLink JAXB (MOXy):In the article below I demonstrate how this can be achieved using
NamespacePrefixMapper
from the JAXB RI, and the@XmlSchema
annotation with EclipseLink JAXB (MOXy):