1

我有一个问题,我有一个 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 对象已成功创建,但验证失败...

我想我在命名空间声明中遗漏了一些东西,我们将非常感谢您的帮助。

谢谢。

4

1 回答 1

0

您可以使用包级别@XmlSchema注释来为您的 JAXB 模型指定默认名称空间限定。下面是一个示例,您需要将包调整为与您的域类相同。

com/example/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;

了解更多信息

于 2012-09-27T14:38:35.890 回答