当前位置: 首页 > 面试题库 >

在Java中解析架构具有导入和包含功能?

朱睿
2023-03-14
问题内容

我试图将加载一个相当复杂的XML模式解析为Java中的Schema对象,以便可以对XML消息进行一些验证。

我的代码与此类似:

SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("schema/schema.xsd")));

我的模式有很多导入:

<?xml version="1.0" encoding="UTF-8"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="base_1">
  <xs:import namespace="base_1" schemaLocation="common/MessageBase.xsd"/>
</xs:schema>

…等等。当我尝试加载架构时,出现很多错误。基于与此相关的另一个问题,看来我需要指定一个资源解析器,但是这不是默认情况下应该处理的吗?

如果是这样,我是否需要一个特定的目录来相对于我正在运行的应用程序运行位置或相对于基本模式文件放置模式?

最后,当我使用XMLSpy或类似的方式加载架构时,它可以正常工作,并且我可以毫无问题地验证XML实例。


问题答案:

我认为使用StreamSource而不指定基本位置是问题的根源。

解析器无法知道主模式在哪里,因此无法解析common / MessageBase.xml。

使用两个参数的构造函数,并传入一个SystemID,即您从其开始的路径名。

有关StreamSource的信息,请参见javadoc。



 类似资料:
  • 问题内容: 我有一个卡桑德拉1.1.2安装我的系统为单节点集群上有三个keyspaces: ,和。我想尽可能地转储keyspace模式及其列族数据,并在其他Cassandra集群上恢复转储。谁能详细建议我该怎么做? 问题答案: 您可以使用和cassandra工具 退房Datastax 文档上相同,这也 您始终可以在文件中执行cassandra-cli命令 您可以将所有create语句加载到文件中并

  • 问题内容: 在Java中,原始类型和数组是否具有包含包? 可能不是,但是只是想确定一下。 问题答案: 简单答案 让我们测试一下: 输出: 空 null 不,他们不:-) 基本类型 原始类是没有包的特殊构造。供参考,请参阅的来源,别名为: 如您所见,原始类是通过package-private和native机制加载的: 并投射到(我想为了启用自动装箱) 包装器类型及其原始类型 顺便说一句:每个包装器类

  • 这个API使用JAXB来方便地使用对象模型,对象模型是由XJC(XML-to-Java)编译器通过命名引用从XML模式生成的。它抽象了JAXB上下文的创建,并通过各种背景魔法和反射找到ObjectFactory方法。它的基本要旨是,您总是定义一个通用模式,然后任何数量(也可能是0)的模式“扩展”该通用模式,每个模式产生自己的数据模型。通用模式携带可重用的定义,扩展它的定义使用这些定义组成自己的模型

  • 问题内容: 我在Eclipse中构建的Android应用程序突然无法构建,并出现了许多错误。最明显的错误是表明所有android导入都无法解决。 所有这些都标记为无法解决。我尝试删除并重新添加JRE系统库。我曾尝试清洁和重建。我已经尝试将“快速修复”选项设置为“修复项目设置…”,但这仅会显示一个对话框,提示… “ 尚未找到解决无法解决对’android.app.Bundle’的引用的建议。单击此处

  • 我有一个实体与属性@公式像这样: 当我将hibernate配置为指向Oracle DB时,我没有问题,但是,当我切换到SQLServer时,hibernate不包括shema,并且查询失败, 为hibernate生成的查询如下所示: 参数hibernate.default_schema=SIGAP正在读取并包含在表中,但不包含在函数中, 在该函数中是否有强制shema的选项/注释? 我尝试了hib

  • 如何解决这个问题??。我在CRUD板条箱描述,但为什么看起来像这样?有人能帮帮我吗?请..这就是结果