[英]How to marshal multiple namespaces to XML root element with JAXB
我想讓JAXB編組到xml,其中名稱空間僅出現在根元素中,而不出現在其他任何元素中:
<myroot xmlns="http://www.mysite.com" xmlns:a="http://www.mysite.com/a" xmlns:ab="http://www.mysite.com/ab" xmlns:y="http://www.mysite.com/y">
...
</myroot>
我已經嘗試了包級別@XmlSchema,但是我必須做錯了什么,因為什么都沒有出現。
這是我的根元素類:
@XmlRootElement(name="myroot")
@XmlAccessorType(XmlAccessType.FIELD)
public class RootElementClass
{
....
}
我也有以下package-info.java:
@XmlSchema
(
namespace="http://www.mysite.com",
elementFormDefault=XmlNsForm.QUALIFIED,
xmlns=
{
@XmlNs(namespaceURI = "http://www.mysite.com", prefix = ""),
@XmlNs(namespaceURI = "http://www.mysite.com/a", prefix = "a"),
@XmlNs(namespaceURI = "http://www.mysite.com/ab", prefix = "ab"),
@XmlNs(namespaceURI = "http://www.mysite.com/y", prefix = "y")
}
)
package com.seastreetinc.rd.nso.jaxb;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;
JAXB(JSR-222)規范不涵蓋名稱空間聲明出現的位置或前綴的名稱(請參閱: http : //blog.bdoughan.com/2011/11/jaxb-and-namespace-prefixes.html )。
實現所使用的一般策略是找出模型使用的最小名稱空間,並在根元素上聲明它們。 這可能是您在@XmlSchema
批注中聲明的內容的子集。
NamespacePrefixMapper
擴展可用於控制根元素上的名稱空間。 有關完整示例,請參見下面鏈接的答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.