簡體   English   中英

JAXB Unmarshalling Error,沒有命名空間的package-info文件?

[英]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;

謝謝你的幫助

更改QUALIFIEDUNQUALIFIED會幫助,如果(對應於頂級元素@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM