我有在架構元素下列屬性的模式: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