从XML生成JAXB对象

时间:2012-09-27 13:51:09

标签: jaxb xsd

我遇到了问题,我有一个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创建对象时,对象不会被填充,并且所有成员都是null。

但是,如果我将XML修改为以下内容:

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

在这种情况下,JAXB对象已成功创建,但验证失败...

我想我遗漏了名称空间声明的内容,我们非常感谢您的帮助。

感谢。

1 个答案:

答案 0 :(得分: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;

了解更多信息