JAXB生成包名称的XML元素

我正尝试使用JAXB从POJO生成一个简单的XML。 这是我的XML输出:

<Customer>
    <name>abcd</name>
</Customer>

<com.some.pkg.Customer>
    <name>abcd1231</name>
</com.some.pkg.Customer>

这是无效的XML:元素名称不能包含点或空格,或其他标点符号...虽然-是允许的。 因此,无法使用JAXB或其他方式生成此特定的XML(因为它不是XML)。

相反,JAXB要做的是在包信息文件上使用注释,该文件定制如何处理元素的名称空间(命名空间前缀,生成完全限定名称等)。

这样你最终会得到像这样的东西:

<ns:Customer xmlns:ns="com.some.pkg">
  <ns:name>abcd1231</ns:name>
</ns:Customer>

com.some.pkg package-info.java文件com.some.pkg

@XmlSchema(namespace = "com.some.pkg", 
           xmlns = { @XmlNs(namespaceURI = "com.some.pkg", prefix = "ns") },
           attributeFormDefault = XmlNsForm.QUALIFIED, 
           elementFormDefault = XmlNsForm.QUALIFIED)
package com.some.pkg;

import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
链接地址: http://www.djcxy.com/p/62971.html

上一篇: JAXB generate XML element with package name

下一篇: Would like unknown attributes to error when Jaxb unmarshalling