我遇到了问题,我有一个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对象已成功创建,但验证失败...
我想我遗漏了名称空间声明的内容,我们非常感谢您的帮助。
感谢。
答案 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;
了解更多信息