`
iamlotus
  • 浏览: 107893 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

如何用java验证XML schema

 
阅读更多

以前验证XML一直使用dtd的,今天尝试着用xsd作验证,可是网上的例子一直跑不起来。折腾了半天才发现是例子里面对于XML文件的命名空间没有设置清楚,这里解决下方案记录:

 

[note.xml]

 

<?xml version="1.0"?>
<note xmlns="http://adcoup.baidu.com/schema/note">
 <to>Tove</to>
 <from>Jani</from>
 <heading>Reminder</heading>
 <body>Don't forget me this weekend!</body>
</note>

 

  网上的例子就是在这里没设置对xmlns,这里的xmlns一定要和下面note.xsd中的targetNamespace和xmlns一致

 

[note.xsd]

 

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://adcoup.baidu.com/schema/note" xmlns="http://adcoup.baidu.com/schema/note"
	elementFormDefault="qualified">
	<xs:element name="note">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="to" type="xs:string" />
				<xs:element name="from" type="xs:string" />
				<xs:element name="heading" type="xs:string" />
				<xs:element name="body" type="xs:string" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

 

[java]

 

  

  String configFileLocation = "/note.xml";
        String xsdFileLocation = "/note.xsd";
        InputStream configInputStream = this.getClass().getResourceAsStream(configFileLocation);
        if (configInputStream == null) {
            throw new IllegalArgumentException("can not find resource[" + configFileLocation + "]");
        }

        InputStream xsdInputStream = this.getClass().getResourceAsStream(xsdFileLocation);
        if (xsdInputStream == null) {
            throw new IllegalArgumentException("can not find resource[" + xsdFileLocation + "]");
        }

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(true);
        SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = schemaFactory.newSchema(new SAXSource(new InputSource(xsdInputStream)));
        factory.setSchema(schema);

        DocumentBuilder builder = factory.newDocumentBuilder();

        builder.setErrorHandler(new ErrorHandler() {

            @Override
            public void warning(SAXParseException exception) throws SAXException {
                throw new RuntimeException(exception);
            }

            @Override
            public void fatalError(SAXParseException exception) throws SAXException {
                throw new RuntimeException(exception);
            }

            @Override
            public void error(SAXParseException exception) throws SAXException {
                throw new RuntimeException(exception);
            }
        });

        document = builder.parse(configInputStream);

        System.out.println(document);

 

1
2
分享到:
评论
1 楼 youjianbo_han_87 2012-09-25  
axiom包也可以验证。

相关推荐

    Java通过XML Schema校验XML

    因此,本文将重点介绍如何使用DOM4j结合javax.xml.parsers包中的API来实现XML的有效性校验证。 #### DOM4j与XSD校验 在本例中,作者选择使用DOM4j库来进行XML的解析与校验,并且结合了javax.xml.parsers包中的...

    根据xml schema生成xml

    2. **验证XML文档**:使用XML解析器或者XML Schema处理器(如Java的JAXB、Apache XMLBeans等)来检查XML文档是否符合XSD的定义。验证过程能发现并报告不符合规范的元素或属性。 3. **根据XML Schema生成XML**:在...

    XML Schema教程

    - **在应用程序中使用 XML Schema**:XML Schema 可以用于验证 XML 数据的有效性,确保其符合预期的结构和格式要求。 #### 四、XML Schema 标准 - **XML Schema 是 W3C 标准**:XML Schema 在 2001 年成为了万维网...

    java中实现xmlschema验证文件借鉴.pdf

    在Java中,XML Schema(XSD)用于定义和验证XML文档的结构和数据类型,确保文档遵循特定的规范。XML Schema文档使用XML语法定义了一系列规则,这些规则描述了有效XML文档应该具有的元素、属性、数据类型以及它们之间...

    xmlschema-core-2.0.3的jar

    `xmlschema-core-2.0.3.jar` 是一个Java库,专门用于解析和操作XML Schema文档,它支持XML Schema 1.1标准。 在Spring Web服务中,XML Schema Core库扮演着关键角色。Spring Web Service框架是基于合同优先...

    XmlSchema-1.4.6.jar

    使用`XmlSchema-1.4.6.jar` 这样的库可以简化这个过程,提供了一种标准和方便的方式来处理XML Schema,从而让开发者可以专注于业务逻辑而不是底层的XML处理。 在实际项目中,当遇到类似问题时,应首先检查项目依赖...

    XmlSchema-1.4.7.jar

    XmlSchema-1.4.7.jar 是一个Java库,它实现了W3C的XML Schema标准,用于处理XML Schema文档。这个版本(1.4.7)可能是该库的一个稳定版本,提供给用户免费使用。XML Schema是XML的一种规范,定义了如何验证XML文档的...

    XML文件XML Schema.docXML Schema.doc

    在Java中,XML Schema的验证可以使用javax.xml.validation包,提供了独立于模式语言的验证服务接口。该包提供了三个类来验证文档:SchemaFactory、Schema和Validator。 在实际应用中,XML Schema可以用于: 1. ...

    XML详解----Schema(精讲)

    * 文档验证:XML Schema可以用于验证XML文档的正确性,确保文档符合预定义的结构和内容。 * 数据存储:XML Schema可以用于定义数据存储的格式和结构,确保数据的正确性和一致性。 XML Schema的优点: * 提高数据...

    apache xmlschema api文档

    - 验证XML文档:创建`Validator`对象,然后使用它来验证XML文档是否符合XML Schema。 - 动态解析XML Schema:根据需要加载和解析XML Schema文档,以适应不同的业务需求。 - 查询XML Schema信息:获取元素、属性、...

    西工大服务计算实验2-1_XML Schema

    通过这些库,你可以加载XML Schema文件,验证XML文档是否符合Schema定义,也可以根据Schema生成XML文档。 标签"SOA"提示我们,这个实验可能与Service-Oriented Architecture(面向服务架构)有关。在SOA中,XML和...

    XMLSchema.chm

    这可以通过编程语言中的XML解析库或XML工具实现,例如Java的JAXB,.NET框架的XmlSchema类等。 10. **学习资源**:"XMLSchema.chm"这样的帮助文档通常会详细解释XML Schema的语法、用法和示例,对于初学者来说是非常...

    xmlschema-1.4.5.jar.zip

    在Java环境中,`xmlschema-1.4.5.jar`是一个关键组件,它提供了一系列API供开发者使用,以便在应用程序中解析、验证XML文档。这个库通常被集成到那些需要处理XML数据,比如Web服务、数据交换或配置文件的应用中。它...

    xml Schema学习

    3. **实例解析**:通过具体例子展示如何编写XML Schema,以及如何使用XML Schema来验证XML文档。 4. **工具支持**:介绍一些常用的XML Schema编辑器和验证工具,如XMLSpy、 Oxygen XML Editor等,以及如何利用这些...

    java中实现xmlschema验证文件参照.pdf

    这段代码会验证XML文件是否符合`students.xsd`中定义的模式。如果XML文档与XSD不匹配,`validate()`方法将抛出异常,程序将在运行时停止,并提供有关验证失败的详细信息。 总结来说,Java中实现XML Schema验证文件...

    XML Schema

    XML Schema 是一种强大的工具,用于定义和验证XML文档的结构和数据内容。它作为XML的数据定义语言,允许开发者创建复杂的模式来确保XML文档遵循特定的规则和格式,从而提高数据的准确性和一致性。 首先,XML Schema...

    Java and XML(英文第三版)_java_xml_birdsolc_源码

    10. **XML Schema**:XML Schema定义了XML文档的结构和数据类型,是验证XML文档是否合法的重要工具。 通过学习本书,读者可以掌握Java与XML的集成技巧,理解如何利用Java API处理XML文档,以及如何构建和消费Web...

    cxf-2.1.jar neethi-2.0.1.jar xml-resolver-1.2.jar XmlSchema-1.1.jar

    4. **XmlSchema-1.1.jar**: 这是Apache的XmlSchema项目,它为Java应用程序提供了XML Schema 1.1规范的实现。XML Schema是一种用于定义XML文档结构和数据类型的语言,它可以验证XML文档是否符合预定义的规则。这个库...

    XML Schema步步进阶

    XML Schema 是一种强大的工具,用于规范和验证 XML(可扩展标记...在实际编程中,你可以使用各种编程语言(如 Java、Python、C# 等)的库或框架来解析和应用 XML Schema,以确保你的 XML 文档符合预设的结构和规则。

Global site tag (gtag.js) - Google Analytics