1

我在模式元素中有一个具有以下属性的模式:

<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 是正确的前缀。

谢谢你

4

2 回答 2

3

前缀的名称没有意义。它所做的只是在命名空间和属于该命名空间的标签之间建立联系。前缀是abc还是namespace01或者没有前缀因为使用了默认命名空间并不重要。据我所知,您不能在 JAXB 中强制使用前缀或前缀的特定名称。

于 2010-10-28T07:51:19.730 回答
2

在下面的文章中,我演示了如何使用NamespacePrefixMapperJAXB RI 以及使用EclipseLink JAXB (MOXy)@XmlSchema的注释来实现这一点:

于 2010-10-28T09:08:32.893 回答