Tag: schema

使用Java中的XSOM解析XSD架构。 如何访问元素和复杂类型

我在Java中使用XSOM解析了很多.XSD文件。 我有两个.XSD文件,一个定义日历,第二个定义全局类型。 我希望能够阅读日历文件并确定: 日历有3个属性 有效的是名为eYN的ENUM Cal是一个字符串 状态是一个名为eSTATUS的ENUM Calendar.xsd gtypes.xsd 我尝试访问此信息的代码如下。 我对Java很陌生,所以任何风格批评都欢迎。 我真的需要知道 如何访问复杂类型cal并看到它是一个字符串? 如何访问Status的定义以查看它是eSTATUS 强调文本类型的枚举 我有几次尝试通过ComplexType和Elements和Content访问正确的信息。 但是,我只是没有得到它,我找不到任何有用的例子。 我希望(希望)当你知道如何时,最好的方法(相对)简单。 所以,再一次,如果有人能指出我正确的方向,那将是一个很大的帮助。 xmlfile = “Calendar.xsd” XSOMParser parser = new XSOMParser(); parser.parse(new File(xmlfile)); XSSchemaSet sset = parser.getResult(); XSSchema s = sset.getSchema(1); if (s.getTargetNamespace().equals(“”)) // this is the ns with all the stuff // in { // try ElementDecls Iterator […]

如何在不使用Apache DDLUtils的情况下使用JDBC将模式从一个数据库复制到另一个数据库?

我在MySQL中有一个数据库,我想以编程方式在FileMaker Pro中创建所有相同的表和字段。 我可以使用JDBC自己做,但我希望已经有一个库可以做到这一点。 我查看了Apache的DDLUtils,但是我无法弄清楚如何构建它(它使用Maven构建系统,当我尝试构建它时会出现致命错误)。

JAXB Bean生成

我正在使用JAXB在Maven中使用JAXB插件从XSD生成bean。 这工作正常,期望代码包含每个字段的isSetXXXXXX()方法。 例如 对于字段firstName ,它产生以下代码: @XmlElement(name = “FirstName”, required = true) protected String firstName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.token = firstName; } public boolean isSetFirstName() { return (this.firstName!= null); } 这个isSetFirstName()方法导致了问题,我不希望JAXB生成这些问题。 有没有办法阻止这种行为? 谢谢。 UPDATE 解决了这个问题:问题出在xjb文件中,generateIsSetMethod设置为true。 bindingStyle=”modelGroupBinding” choiceContentProperty=”true” > 这也回答了我之前的问题 。

如何使用JAXB从XML Schema生成Java Enum?

我正在使用maven插件maven-jaxb2-plugin从XSD Schema文件生成POJO。 这很好用。 唯一让我困扰的是,xml模式枚举没有映射到Java Enum Type中。 我的maven插件是从我称为schemachooser.xsd的文件生成java pojos schemachooser.xsd : 它确实生成文件,但不生成“新”枚举类“MyEnumType”。 我使用绑定错了吗?

是否可以使用JAXB从模式映射到java.util.Map?

我有一个现有的XML模式,其中包含一个我希望使用JAXB映射到某种Java Map的类型。 我的构建过程采用模式并创建bean。 我想通过将我的架构映射中的一个complexTypes映射到java.util.Map来自定义此过程。 我读过JAXB“无法做接口”的地方。 我不确定这是否适用于这种情况,但如果是这样我可以将它映射到HashMap。 此外,它不一定必须是映射到Map的complexType,它可以是一个元素,如果这是所需的。 我使用.xjb文件控制我的JAXB生成,所以我正在寻找一些放在那里。 我尝试了以下,但它不起作用: 编辑:我已经添加了更多关于我已经尝试过的上述绑定的细节。 它在模式编译期间生成以下错误: [jaxb] [ERROR] compiler was unable to honor this javaType customization. It is attached to a wrong place, or its inconsistent with other bindings. 不起作用,因为它只能用于XML Schema原语和Java类型之间的映射 。 由于我想在复杂类型和Java类型之间进行映射,因此我无法使用它。

使用JAXB来支持具有微小变化的模式

情况 我需要支持基于模式生成XML文档,这些模式之间只是略有不同。 具体来说,我需要支持的模式基于行业标准,这些标准随着时间的推移会略有变化,供应商可能会制作自己的定制版本。 问题 我打算使用inheritance的JAXB 2(来自Metro)作为解决方案。 我期望包结构最终会像这样: com.company.xml.schema.v1 com.company.xml.schema.v2 com.company.xml.schema.v2.vendorxyz v2包中的类只是扩展v1包中的类并根据需要覆盖。 不幸的是,该计划最终变得不可能,因为子类不能覆盖父类中的注释( 参见此处 )。 例如,如果模式中的属性在版本之间重命名,则v2元素类必须完全重新实现该元素而不从v1inheritance。 据我所知,这让我只有两个选择 选项1 为每个模式类型创建“基础”包,使用@XmlAccessorType(XmlAccessType.NONE)注释该包中的元素类,并删除所有其他注释。 然后,在每个版本化的包中创建类,这些类将“base”包中的相应类子类化,并添加所有必需的注释。 这个解决方案确实给了我一些inheritance领域的帮助,但代码重复是巨大的,维护是一个挑战。 选项2 不要使用JAXB。 我真的不喜欢这个解决方案,因为我也想使用JAX-RS / JAX-WS。 问题 我应该如何使用JAXB来支持具有微小变化的多个模式,而不需要一堆代码重复? 我应该看一下不同的技术组合吗? 编辑 Blaise下面的解决方案非常适用于我们的大部分模式,这些模式只是彼此之间的一个小翻译,通常具有相同的数据。 但是,如果将inheritance与包名称用于版本控制更有意义,我们遇到了一个问题。 例如: com.company.xml.schema.v1.ElementA com.company.xml.schema.v2.ElementA (其中v2.ElementA扩展v1.ElementA) 在这种情况下使用MOXy的OXM会遇到错误,可以在这里找到解决方法(使用Blaise提供的解决方案,不能少!)

xjc:两个声明在ObjectFactory类中导致冲突

运行以下xjc命令会引发错误: $ xjc “ftp://ftp.ncbi.nih.gov/bioproject/Schema/Core.xsd” parsing a schema… compiling a schema… [ERROR] Two declarations cause a collision in the ObjectFactory class. line 340 of ftp://ftp.ncbi.nih.gov/bioproject/Schema/Core.xsd [ERROR] (Related to above error) This is the other declaration. line 475 of ftp://ftp.ncbi.nih.gov/bioproject/Schema/Core.xsd 虽然我理解JAXB绑定以及XJC中存在什么冲突,但我不明白当前模式中的冲突在哪里。 我应该怎么解决这个问题? 谢谢, 皮埃尔 更新:这里是错误的上下文: $ curl -s “ftp://ftp.ncbi.nih.gov/bioproject/Schema/Core.xsd” | sed ‘s/^[ \t]*//’ | cat -n | […]

JPA – EclipseLink – 如何更改默认架构

我正在使用weblogic和oracle编写Web应用程序。 数据源是通过JNDI配置的,具有受限制的数据库用户,可以将DML转换为表,但不能使用DDL。 正如您可能猜到的那样,该用户不是这些表的所有者,但他被授予了访问权限。 假设他是GUEST_USER 该应用程序使用JPA + EclipseLink,并且已经定义了许多实体。 我不想在每个实体类中写入更改模式的属性。 我已经尝试过使用此代码的SessionCustomizer。 public class MyCustomizer implements SessionCustomizer{ @Override public void customize(Session session) throws Exception { session.executeNonSelectingSQL(“ALTER SESSION SET CURRENT_SCHEMA = OWNERS_SCHEMA”); } } 似乎有一些未初始化的东西,我得到一个空指针exception,我甚至不确定这是否是在使用它们之前更改连接的模式的方法。 任何样品或想法? 在此先感谢您的帮助!

Spring v3没有为元素’mvc:resources’找到声明

目前正在运行 Tomcat:v6 Spring Tools Suite:v2.7.2 Spring框架:spring-webmvc-3.0.5 Servlet XML web.xml部分代码 duckapp / Servlet目的 web.xml将所有URL映射到servlet,但mvc:resources映射静态文件除外。 错误 cvc-complex-type.2.4.c:匹配的通配符是strict,但是没有找到元素’mvc:annotation-driven’的声明。 app-servlet.xml / app / www / WEB-INF cvc-complex-type.2.4.c:匹配的通配符是strict,但是找不到元素’mvc:resources’的声明。 app-servlet.xml / app / www / WEB-INF 已知的问题 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd不包含元素资源 如果被http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd取代仍然无效,可能无法正常工作根据spring 3.05的jar文件 mvc:资源出现在spring v3.0.4中,但没有新的xsd 题 如何修复编译错误以使mvc:资源正常工作? 我一直在挖掘大约2个小时,还没有可靠的答案……