Tag: xsd

使用RNGOM从RelaxNG模式生成对象模型 – 如何开始?

我想用RelaxNG Schema生成一个对象模型。 因此,我想使用RNGOM对象模型/解析器 (主要是因为我找不到任何替代方案 – 尽管我甚至不关心解析器编写/生成的语言)。 现在我从SVN检查了RNGOM源代码 ,我不知道如何使用RNGOM,因为那里没有关于用法的任何信息。 一个有用的提示如何从RNGOM开始 – 一个链接,示例或任何描述,使我不必阅读理解RNGOM的整个源代码 – 将作为答案。 更好的是如何使用解析器从RNG文件生成对象模型的简单示例。 更多信息: 我想从以下RelaxNG模式生成Java类: http://libvirt.org/git/?p=libvirt.git;a=tree;f=docs/schemas;hb=HEAD 我发现Glassfish的人正在使用rngom生成我需要的相同对象模型,但我还不知道他们是如何使用rngom的。

如何使用JAXB针对模式validationXML?

我正在使用XML和JAXB因为我正在解组并将XML编组为Java对象,反之亦然。 现在我试图根据我们的模式validation我们的XML(test.xsd)。 假设我的XML中缺少任何必需字段,那么我想知道在针对模式test.xsdvalidationXML之后缺少哪个字段。 public void unmarshal(final InputStream is) { final XMLInputFactory factory = XMLInputFactory.newInstance(); final XMLStreamReader reader = factory.createXMLStreamReader(is); Object req = unmarshaller.unmarshal(reader); // how would I validate here? } 我如何根据test.xsd架构validation我的XML。 我的test.xsd架构路径是 – C:\工作空间\一个\ 2 \ 3 \ SRC \主\的java \ COM \包\ SERV \ AP \ VersionOne的\ test.xsd 更新:加载test.xsd为: Schema schema = factorySchema.newSchema(new File(“C:\\workspace\\one\\two\\three\\src\\main\\java\\com\\package\\serv\\ap\\versionOne\\test.xsd”));

Java XML Schemavalidation:前缀未绑定

我已经按照本教程validation了XML文件。 但是在validationXML文件时我收到了exception。 我做错了什么? 我的代码: XML架构: 要validation的XML文件: FirstName Lastname +xxxxxxxxxxxx 用于validation的Java源代码: import javax.xml.XMLConstants; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.*; import org.xml.sax.SAXException; import java.io.*; public class ProtocolValidator { public static void main(String [] args) throws Exception { Source schemaFile = new StreamSource(new File(“schema.xsd”)); Source xmlFile = new StreamSource(new File(“test_xml.xml”)); SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = schemaFactory.newSchema(schemaFile); […]

使用XSD,目录解析器和XSLT的JAXP DOMvalidationXML

背景 使用JDK 6将XML文件加载到DOM中 。 必须针对XSDvalidationXML文件。 XSD文件位置因运行环境而异。 确保XML可以针对XSD进行validation,无论目录结构如何,都需要目录解析器。 一旦validation了XML,就可以对其进行转换。 我的理解是DocumentBuilderFactory可用于配置此类validation。 这是通过使用带有XMLCatalogResolver的DocumentBuilder来查找与XML文件关联的XSD文件(以及任何包含的文件)来实现的。 有关使用目录派生的XSDvalidationXML文档的问题,包括: JAXP – 调试XSD目录查找 具有自定义资源解析程序的Java XML Schemavalidation程序无法解析元素 XMLCatalog可以用于模式导入吗? 如何可靠地从类路径资源(jar内)加载XMLCatalog? 用于实体解析的Catalog.xml文件的XMLSchemavalidation 从XJC中导入的模式解析类型定义失败 使用Java查找可在xml架构中重复的项目 Java servlet:针对xsd的xmlvalidation 这些问题和答案中的大多数引用了硬编码的XSD文件路径,或者使用SAX执行validation,或者与DTD相关 ,或者需要JDOM依赖项 ,或者没有转换 。 问题 没有规范的解决方案描述如何使用JAXP DOM进行XSDvalidation的XML目录,随后通过XSLT进行转换。 有许多 片段 ,但没有编译和运行的完整独立示例(在JDK 6下)。 我发布了一个答案似乎在技术上有效,但过于冗长。 题 什么是规范方式(使用JDK 1.6库)来validation和转换XML文档? 这是一种可能的算法: 创建目录解析程序。 创建XML解析器。 将解析器与解析器相关联。 解析包含XSD引用的XML文档。 终止validation错误。 使用XSL模板转换经过validation的XML。

必需Spring中相同类型的多个bean

在您将其标记为重复之前的请求。 我已经通过论坛,无法在任何地方找到问题的解决方案。 我正在使用Spring 3.2编写代码,所有内容都是纯粹基于注释的。 代码接收从不同XSD文件派生的XML文件。 所以我们可以说,有五种不同的XSD(A1,A2,A3,A4,A5),我的代码接收任何类型的XML,我有逻辑来识别到达时的XML类型。 现在,我试图使用Spring OXM解组这些。 但由于涉及多个XSD,我们实际上无法使用一个Un-marshaller。 所以我们需要大约五个。 在Configuration类中,我添加了五个bean,如下所示: @Bean(name=”A1Unmarshaller”) public Jaxb2Marshaller A1Unmarshaller(){ Jaxb2Marshaller unMarshaller = new Jaxb2Marshaller(); unMarshaller.setContextPath(“package name for the classes generate by XSD A1″); } @Bean(name=”A2Unmarshaller”) public Jaxb2Marshaller A1Unmarshaller(){ Jaxb2Marshaller unMarshaller = new Jaxb2Marshaller(); unMarshaller.setContextPath(“package name for the classes generate by XSD A2″); } @Bean(name=”A3Unmarshaller”) public Jaxb2Marshaller A3Unmarshaller(){ Jaxb2Marshaller unMarshaller […]

如何针对xsdvalidationxml并获取* ALL *错误?

我有一个像下面的标准代码来validationxml对xsd,但它在第一次错误时抛出exception并停止。 如何validationxml,但继续第一个和下一个错误并最终得到它们? 它甚至可能吗? public static void validate(File xml, InputStream xsd) { try { SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = factory.newSchema(new StreamSource(xsd)); Validator validator = schema.newValidator(); StreamSource xmlFile = new StreamSource(xml); validator.validate(xmlFile); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

通过XSD def将逻辑代码插入到生成的JAXB java文件中

问题是,出于某种原因。 xsd没有/不能定义除基本属性和setter和getter之外的所有逻辑变量,所以我们试图通过xsd定义“注入代码”,这些代码实际上已被其他人多次讨论过。 使用’简单java方法’进行’简单注入’没有问题,它不需要在类def之上使用任何’import’语句。 但不知怎的,如果我们想要使用它。 在我看来,我们无法接受或导入除了setter或getter之外的任何包。 ,详见下文 xsd定义test.xsd <![CDATA[ private String str; public String returnStr() { Locations locationCls =this.getLocations(); List locationids = new ArrayList(); // get a list of locationid into locationids (list) List locationList = locationCls.getLocation(); for (Location loc : locationList) { locationids.add(String.valueOf(loc.getId())); } // return string like loc1,loc2,loc3 return StringUtils.join(locationids, ‘,’); } ]]> 运行jaxb […]

如何通过相对路径引用本地XSD文件

这是关于如何配置Eclipse以使用`ehcache`的后续内容,并且在如何正确引用本地XML架构文件中有一个绝对路径示例? 由于不再托管xsd文件,我从存档中下载了它的副本。 我把文件放在我的资源目录中,并希望从我项目的相对路径中的xsi:schemaLocation引用它。 我们有windows和mac开发人员,因此像file:///c:/project/foo这样的绝对路径约定将不起作用。 相对路径的另一种替代方法是,如果有一种方法可以引用windows和mac的系统属性,那么我可以执行2个条目,如file:///$HOME/workspace/foo 。 我的mac上的项目存在于~/workspace/foo ,$ HOME的echo给出了我的主路径。 我的spring-cache.xml存在于./src/main/webapp/WEB-INF/spring/ 我的ehcache-spring-1.2.xsd存在于./src/main/resources/ 以下是我尝试过的一些没有成功: file:///$HOME/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd file:///./src/main/resources/ehcache-spring-1.2.xsd file:///../../../../resources/ehcache-spring-1.2.xsd file:///../../../../resources/ehcache-spring-1.2.xsd ../../../../resources/ehcache-spring-1.2.xsd file://../../../../resources/ehcache-spring-1.2.xsd file://$HOME/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd file://./src/main/resources/ehcache-spring-1.2.xsd file://../../../../resources/ehcache-spring-1.2.xsd 我似乎也有问题让它从绝对路径引用文件,所以也许有一种不同的方式来引用mac上的文件? 例如以下不起作用: file:///Users/me/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd file:////Users/me/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd file://Users/me/workspace/foo/src/main/resources/ehcache-spring-1.2.xsd

JAXB SchemaFactory源命令必须遵循模式之间的导入顺序吗?

使用最新的JAXB(Sun)并具有模式层次结构,这些模式在模式之间使用导入指令来共享类型定义。 在JAXB中对Marshaller / Unmarshaller的setSchema调用中激活了模式validation,这应该将validation推迟到Xerces(使用Java 1.5)。 在使用SchemaFactory创建Schema对象时,我不想知道模式之间的import指令的顺序。 不幸的是,我还没有找到允许这个的Xercesfunction/属性。 例如,如果通过导入将a.xsd拉入b.xsd,则以下代码不起作用: FileInputStream a = new FileInputStream(“a.xsd”); FileInputStream b = new FileInputStream(“b.xsd”); Schema schema = SchemaFactory.newInstance( XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema( new Source[] { new StreamSource(b), new StreamSource(a) } ); Source数组的顺序必须是a.xsd然后是b.xsd。 有什么方法吗?

如何使xml架构与JTable,xml java相关联(链接)?

在这里你可以看到我的申请: 所以我需要做的是: 我不知道如何通过代码链接xml架构与JTable所有类型(int,string,float)。 比如说,Year是int类型,架构是int,我可以如何链接它? 我不知道将如何与英语链接或相关。 在此应用程序中,我将所有数据写入xml文件,并在加载应用程序时从xml文件加载所有数据。 在这里我创建xml架构: public void CreateSchema(String FileName){ file=FileName; JAXBContext jc; try { jc = JAXBContext.newInstance(XmlSchemaType.class); jc.generateSchema(new SchemaOutputResolver() { @Override public javax.xml.transform.Result createOutput(String namespaceURI, String suggestedFileName)throws IOException { suggestedFileName=file+”.xsd”; return new StreamResult(suggestedFileName); } }); } catch (IOException e) { e.printStackTrace(); } catch (JAXBException e) { e.printStackTrace(); } } 这是所有类型: import javax.xml.bind.annotation.XmlAccessType; import […]