[英]JAXB Unmarshalling Error, package-info file for no namespace?
我試圖使用JAXB從文件解組XML。 我也有一個網絡服務。 我想不使用命名空間,而不是Web服務定義的命名空間。
我收到以下錯誤:
Exception in thread "main" javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"CustomerName"). Expected elements are <{http://www.ws.NET}CustomerName>
我認為解決方案是將package-info.java
文件更改為不使用命名空間。 這是正確的方法嗎? 我應該對這個文件做些什么改變? package-info.java
文件如下所示:
@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.ws.NET", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package mynewpackage;
謝謝你的幫助
更改QUALIFIED
到UNQUALIFIED
會幫助,如果(對應於頂級元素@XmlRootElement
注釋類) 是在目標命名空間,但它的孩子都沒有,如
<ns:Response xmlns:ns="http://www.ws.NET">
<CustomerName>Ian</CustomerName>
</ns:Response>
但如果頂級(在本例中為Response
)元素也不合格,這將無濟於事。
如果您有一個注釋為命名空間限定的JAXB模型,並且您想要解組不具有多個選項的XML。
您可能只需要從package-info
類中刪除@XmlSchema
注釋。 如果沒有其他包級別注釋,則可以刪除整個類。 請注意,也可以在其他注釋(例如@XmlElement
上指定名稱空間信息。
如果您無法更改JAXB模型以刪除命名空間限定,那么您可以利用SAX XMLFilter
在讀取XML時將命名空間應用於XML。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.