我有在架构元素下列属性的模式:JAXB Java 6中没有前缀正确的命名空间前缀编组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”的元素“ABC:名称”未绑定]
请帮助我如何让JAXB知道abc是正确的前缀。
谢谢 普拉迪普
感谢musiKk,现在我明白了。 但是,如果我们想要使用我们自己定义的前缀,我们可以使用包含NamespacePrefixMapper的JAXB RI以及来自Java 6的JAXB。[在类路径中包含JAXB RI]。 marshaller.setProperty(“com.sun.xml.bind.namespacePrefixMapper”,new NamespaceMapper()); – pradeep 2010-10-30 04:57:00
@pradeep:很好。即使你让自己依赖于一个特定的实现,也很好理解。 – musiKk 2010-11-01 08:35:53
不要完全同意“无意义”的部分。从技术角度来看,这可能是“无意义的”。但是,假定例如 - 以任何方式 - 人类将看到或使用XML,能够以有意义的方式设置命名空间前缀可能很重要。 – mmey 2014-03-23 20:54:28