Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么我的JAXB解组找不到在导入模式中声明的元素?

为什么我的JAXB解组找不到在导入模式中声明的元素?
EN

Stack Overflow用户
提问于 2010-02-12 06:18:19
回答 1查看 3.4K关注 0票数 2

我有两个具有循环依赖关系的模式A和B(这是一个中间步骤)。我使用的XML文件作为输入,根据xmllint和Visual对模式进行验证。Eclipse告诉我,这两个模式都包含两个具有相同名称的全局组件。

A.xsd:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance"
  targetNamespace="http://foo.org/A"
  xmlns="http://foo.org/A"
  elementFormDefault="unqualified"
  attributeFormDefault="unqualified">

<xs:import schemaLocation="b.xsd" />

B.xsd:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-Instance"
  xmlns:foo="http://foo.org/A"
  elementFormDefault="unqualified"
  attributeFormDefault="unqualified">

  <xs:import namespace="http://foo.org/A" schemaLocation="a.xsd" />

我要传递给解组器的XSD是A.xsd。当遇到在B.xsd中定义的元素时,它会抱怨:

org.xml.sax.SAXParseException: cvc-elt.1:找不到元素foo的声明。

我已经通过(伪)设置了模式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InputStream in = .. A.xsd
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
return factory.newSchema(new StreamSource(in);

有人能解释我做错了什么吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-12 06:27:18

<xs:import>用于将其他架构中定义的命名空间导入到当前架构中。schemaLocation属性只不过是在哪里找到其他名称空间的一个提示。

B.xsd的例子中,您说要导入名称空间http://blah.org,并且该名称空间由A.xsd中的模式处理。

A.xsd的情况下,B.xsd的导入没有指定要导入的名称空间。

如果A.xsdB.xsd表示不同的命名空间,那么import需要显式地指定它。

另一方面,如果您只是试图在同一个命名空间中内联来自另一个模式文件的元素,那么include指令就更合适了。

编辑: OK,看过您的模式片段之后,我可以说<xs:import>绝对不是应该做的事情。A.xsdB.xsd都在同一个名称空间(http://foo.org/A)中定义元素,因此您应该使用<xs:include>

当Java遇到一个<xs:import>,而且导入的名称空间是它已经知道的名称空间时,它实际上会忽略它。因此,当它解析B.xsd (在名称空间http://foo.org/A中)时,当它为同一个名称空间找到一个导入时,它会忽略它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2252337

复制
相关文章
批量导入Excel文件,为什么我导入的数据重复了?
这里,显然是因为将合并工作表和数据源放在了同一个文件夹下,所以Power Query将合并工作表也显示了出来,并且,还有一个前面带“~$”的合并工作表,是因为合并工作表当前打开状态,生成了一个临时文件。所以在后续编辑查询的时候我们首先要把合并工作表的内容过滤掉,否则以后刷新数据时会连合并工作表的数据一起导入。
大海Power
2021/08/30
3.1K0
python中关于模块导入的模式
举例:只想导入time模块中的ctime、time两个方法,可以按照以下的格式导入:
Java学术趴
2022/07/15
1.6K0
python中关于模块导入的模式
<script>元素在XHTML中的用法
  编写XHTML代码的规则要比编写HTML严格得多,例如如下代码: 1 <script type="text/javascript"> 2 function compare(a, b){ 3 if(a < b) { 4 alert("A is less than B"); 5 } else if(a > b){ 6 alert("A is greater than B"); 7 } els
就只是小茗
2018/03/07
2.5K0
为什么我坚持使用 JavaScript 函数声明
时光溯回到上世纪 90 年代晚期,在初次接触 JavaScript 时,老师教我们使用函数声明写下Hello World,它看上去是这样的······ function helloWorld() { return ‘Hello World!’; } 那时候,再没有比写出如下Hello World函数更酷的事儿了······ const helloWorld = () => 'Hello World!'; 这个函数表达式体现了 ES 2015 的最大亮点——箭头函数(Arrow function),精简
CSDN技术头条
2018/02/12
1.1K0
为什么我坚持使用 JavaScript 函数声明
成员以其在类中声明的顺序构造
分析以下代码的输出: #include<iostream> using namespace std; class A { public: A(int j):age(j) , num(age + 1) { cout<<"age:"<<age<<",num:"<<num<<endl; } protected: int num; int age; }; void main() { A sa(15); }  运行结果:age:15 , num:2(num为一个随机数) 由于按成员在类定义中的声明
猿人谷
2018/01/17
1.5K0
Python中的类在声明的时候继承object的原因
首先说明python3中无论写不写(object),默认的会自动带上,所以在python3中写不写都一样 class Student1: pass class Student2(object): pass print(dir(Student1())) print(dir(Student2())) ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '
知识浅谈
2020/06/16
1.3K0
IDEA 导入项目后找不到右侧的Maven
有时候在导入项目的时候如果有些奇葩项目没有在根目录下建pom的时候,idea就不会标识其为maven项目,并右侧不会显示出maven相关的标签。
用户2353021
2020/05/11
1.5K0
IDEA 导入项目后找不到右侧的Maven
TypeScript 在 Vue2 中的类型声明问题
最近在一个新项目中,尝试了vue2+typescript的组合,碰到一个问题,在data属性中,我怎么声明一个变量的类型。
2022/02/25
4.7K0
迭代器模式(控制访问集合中的元素)
现在我们需要思索,JDK是怎么做到这一切的?现在让我们先利用迭代器实现一个数组类型Array,这个类型需要支持添加、移除、遍历操作。
幺鹿
2018/08/21
1.3K0
迭代器模式(控制访问集合中的元素)
css 对元素在文档中的排列的影响
    2)、position 的属性值为: absolute | relative,且 z-index 值不为 auto ;
前端老鸟
2019/08/26
1.8K0
说说html 的<!DOCTYPE>声明&标准模式与兼容模式
我们都知道<!DOCTYPE>声明位于文档的最前面,处于<html>标签之前。 <!DOCTYPE>声明不是html标签,它的作用:告知web浏览界面应该使用哪个html版本。 例如: <!DOCTYPE html>  则是告诉浏览器应使用html5。 建议:总是给html文件加上<!DOCTYPE>声明,确保浏览器能预先知道文档类型。 在html 4.0.1中,<!DOCTYPE>声明需引用DTD(文档类型说明),因为html 4.0.1是基于SGML(Standard Generalized Marku
用户1149564
2018/01/11
2.6K0
TypeScript 仅仅导入声明语法
在 TypeScript 中,如果导入的模块没有用于任何表达式,TypeScript 将会删除该模块导入。
三毛
2020/01/20
1.8K0
在线等,我的 adb 找不到了!
在您下载了 Android Studio 并且安装了 SDK 后,如果想要进行诸如开启 Firebase 调试模式 这类的操作,相关教程可能会告诉您要在终端输入 "adb"。您若照做,便可能会出现以下内容:
Android 开发者
2022/03/09
1.9K0
在线等,我的 adb 找不到了!
在未知大小的父元素中设置居中
当提到在web设计中居中元素时。关于被居中的元素和它父元素的信息,你知道的越多就越容易设置。那么假如当你不知道任何信息?居中也是可设置的。
lesM10
2019/08/26
4.1K0
在未知大小的父元素中设置居中
JAXB使用方式
JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档。
HUC思梦
2020/09/03
2.4K0
我在ThoughtWorks中的敏捷实践
E项目是一个在线的物资跟踪监控系统。由ThoughtWorks团队为客户提供的一套完善的软件交付服务。
袁慎建@ThoughtWorks
2018/09/29
2.1K0
我在ThoughtWorks中的敏捷实践
JAVA中的声明语句
JSP声明语句:<%!声明语句%>,通常声明全局变量、常量、方法、类 JSP Scriptlet:<%java代码%>,其中可包含局部变量、java语句 JSP表达式:<%=java 代码%> 显示注释:即HTML注释,可以在客户端显示<!–注释部分--> 隐式注释:即JSP注释,不能在客户端显示<%--注释部分--%> <!-- 显示注释:声明局部变量、java语句 --> 以下是举得例子,帮助你理解 <% int result = 1; out.println(NUM + "+" + result +
Twcat_tree
2022/11/30
9700
Selenium WebDriver找不到元素的三种情况
原因:页面被刷新了。 在当前页面找不到这个元素了,但是你自己手动复制到页面开发者工具上查看明明有啊,为啥在代码里面就找不到了呢?这时,你还可能会问“可是明明元素就在那里,没有变,甚至我是回退回来的,页面都没有变,怎么会说是新页面?”。 其实呢是在操作的过程中页面发生了变化,刷新了,虽然表面上看起来两个元素长得一模一样,事实上是每一个元素都有自己的一个ID号。 用代码(Python)来证明!
软测小生
2019/07/05
5.3K0
Selenium WebDriver找不到元素的三种情况
Sqoop在导入的时候导入多张表
当我们用Sqoop导入一张表的时候可以用 --table <table-name> 去指定要导入一个表,但是我们要导入多个表的话,用这个--table是不行的。 这时候我们可以用Sqoop的import-all-tables加--exclude-tables 进行组合使用,实现我们一次导入多个表的目的。
ZHANGHAO
2018/12/09
6.7K1
Sqoop在导入的时候导入多张表
impala读不到hive导入的数据(或者表找不到)
原因主要是使用hive建表时,表的metadata没有同步,数据及索引也没有同步导致的数据查不到
全栈程序员站长
2021/05/19
1.1K0

相似问题

JAXB解组验证抛出cvc-elt.1:找不到元素错误的声明

10

解组非根元素时的JAXB模式验证

10

JAXB空元素解组

11

Jaxb解组:未获取我的集合元素

10

JAXB中的解组器和模式

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文