2012-09-27 96 views
1

我有一個問題JAXB對象,我有我試圖用XML來驗證XSD文件:生成的XML

的XSD始於:

<xs:schema id="Notes" 
targetNamespace="http://mynotes.com/Notes" 
elementFormDefault="qualified" 
xmlns="http://mynotes.com/Notes" 
xmlns:mstns="http://mynotes.com/Notes" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

然後,我有以下XML :

<?xml version="1.0" encoding="utf-8"?> 
<notes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="noNamespaceSchemaLocation" xmlns="http://mynotes.com/Notes"> 

在這種情況下,我可以證實,但是當我使用JAXB創建一個對象,對象沒有得到填充,所有成員都爲空。

但是,如果我修改XML爲以下內容:

<?xml version="1.0" encoding="utf-8"?> 
<notes>... 

在這種情況下,JAXB對象被創建成功,但驗證失敗...

我想我缺少的東西命名空間聲明,您的幫助將受到高度讚賞。

謝謝。

回答

0

您可以使用包級別@XmlSchema註釋來指定JAXB模型的默認名稱空間限定。下面是一個示例,您需要將包調整爲與您的域類相同。

COM /示例/ package-info.java

@XmlSchema(
    namespace = "http://mynotes.com/Notes", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package com.example; 

import javax.xml.bind.annotation.XmlNsForm; 
import javax.xml.bind.annotation.XmlSchema; 

更多信息