我有问题,我正在生成XML文件Jaxb添加前缀到根元素的命名空间,我不知道如何跳过它。
我有package-info.java文件
@XmlSchema(namespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03", xmlns = {
@XmlNs(namespaceURI = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03", prefix = "")
}, elementFormDefault = XmlNsForm.QUALIFIED)
我有根元素
@XmlType(name = "Document",
propOrder = {
"cstmrCdtTrfInitn"
})
@XmlRootElement(name = "Document")
public class Document {
@XmlElement(name = "CstmrCdtTrfInitn", required = true)
protected CustomerCreditTransferInitiationV03 cstmrCdtTrfInitn;
}
结果我得到了
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:Document xmlns:ns2="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<ns2:CstmrCdtTrfInitn>
<ns2:GrpHdr/>
</ns2:CstmrCdtTrfInitn>
</ns2:Document>
没有@XmlNs它以相同的方式工作,将命名空间添加到@XmlRoolElement也没有帮助。 它可能有什么问题?
答案 0 :(得分:1)
不确定您尝试的是什么,您的xml完全匹配您的代码。
如果您根本不想要名称空间:
<Document>
<CstmrCdtTrfInitn>
<GrpHdr>ala</GrpHdr>
</CstmrCdtTrfInitn>
</Document
只需将包裹信息更改为
即可@XmlSchema()
如果你想使用目标命名空间(所以没有前缀),比如
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
<CstmrCdtTrfInitn>
<GrpHdr>ala</GrpHdr>
</CstmrCdtTrfInitn>
</Document>
然后
@XmlSchema(
namespace = "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03",
elementFormDefault = XmlNsForm.QUALIFIED)
所有上述测试均使用标准Java7 jaxb