`

Java中用XML Schema检验XML实战

    博客分类:
  • Java
阅读更多

上一篇文章"XML Schema检验XML文档结构"中,简单介绍了XML Schema及其写法,这篇主要针对java开发者,在程序中检验XML的有效性。

 

由于程序中经常会对xml的validation进行检验,通过DOM解析再一项一项check的方式,陈旧而且写起来繁杂。本文介绍一种快速检验xml的方法,借助javax.xml.validation包下的Validator, Schema, SchemaFactory等类,通过传入XML Schema Definition(XSD)文件进行验证。

 

代码如下:

 

public static void main(String[] args) throws IOException, SAXException {

	String xmlFile = "test.xml"
	String xsdFile = "test.xsd"

	// 1. Lookup a factory for the W3C XML Schema language
	SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");

	// 2. Compile the schema. 
	File schemaLocation = new File(xsdFile);
	Schema schema = factory.newSchema(schemaLocation);

	// 3. Get a validator from the schema.
	Validator validator = schema.newValidator();

	// 4. Parse the document you want to check.
	Source source = new StreamSource(xmlFile);

	// 5. Check the document
	try {
		validator.validate(source);
		System.out.println(xmlFile  + " is valid.");

	} catch (SAXException ex) {
		System.out.println(xmlFile  + " is not valid because ");
		System.out.println(ex.getMessage());
	}
}

  

 

Validator的validate方法用于检验其正确性,如果不符合XSD描述,则会SAXException,并附带出错信息。

 

 

Hope it can relax your eyes : )

  • 大小: 49.4 KB
2
0
分享到:
评论
1 楼 snowolf 2010-04-15  
强烈收藏! 以前只做过DTD的验证!

相关推荐

    xml-commons-external-1.3.04-bin.zip

    总结起来,XML Commons External 1.3.04是一个强大的XML处理工具集,提供了高效的解析器、全面的DOM和SAX实现,以及XML Schema支持,是Java开发者处理XML文档时不可或缺的库。通过解压"xml-commons-external-1.3.04-...

    C#中用数据集读取Xml文件

    - **XML模式(XSD)**:如果你想确保XML文件遵循特定的结构,可以使用XSD(XML Schema Definition)文件,并用`ReadXmlSchema()`方法加载它。 - **错误处理**:在读取XML时,应考虑捕获可能出现的异常,如文件不...

    asp.net XML编程

    ASP.NET可以使用XmlSchema和XmlSchemaSet类来验证XML文档是否符合指定的XML Schema。 总之,ASP.NET的XML编程能力强大而全面,涵盖了从基础的XML处理到复杂的Web服务和数据绑定等多个方面,为开发人员提供了丰富的...

    XML初步到精通.rar

    XML也常用于WCF(Windows Communication Foundation)服务描述,定义服务接口、操作、消息格式等,这些信息在服务合同(Service Contract)中用XML描述。 掌握XML的解析和序列化是深入学习的关键。XML解析器如...

    xml总结.pdf

    XSL-FO(XSL格式化对象)是XSL中用来定义XML文档格式化和输出格式的部分。 XHTML(可扩展超文本标记语言)是将HTML作为XML应用的一个结果,它是一种严格遵循XML规则的HTML版本。 HTML5是最新版本的HTML,它支持...

    Oracle XML开发手册.rar

    2. **XMLType对象**:XMLType是Oracle中用于存储XML数据的核心对象类型。它可以存储在列中,也可以作为表的主键或外键。XMLType支持XPath查询和XQuery表达式,使得在SQL查询中处理XML数据变得直接和高效。 3. **XML...

    IDEA用maven创建springMVC项目和配置(XML配置和Java配置)

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=...

    XML与电子商务应用PPT

    在数据的结构和模式定义方面,XML Schema(XSD)被用来定义XML文档的结构和数据类型,从而保证数据的一致性和准确性。例如,可以创建一个XSD文件来规定订单数据的格式,包括所有必需的字段和它们的类型。 XML与CSS...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    ),XML中用来设定显示风格样式的文件类型有: 1.XSL XSL全称是Extensible Stylesheet Language(可扩展样式语言), 是将来设计XML文档显示样式的主要文件类型。它本身也是基于XML语言的。使用XSL,你可以灵活的...

    C# XML 入门经典

    - DTD(Document Type Definition)与XSD(XML Schema Definition):两者用于定义XML文档的结构和约束,XSD是更现代且功能更强大的选择。 2. **C#中的XML解析** - `XmlReader`:轻量级读取器,逐节点解析XML,不...

    xml的几种方式的操作集锦大全

    - 在各种编程语言中都有XML处理库,如Java的JAXB、DOM4J,Python的lxml,JavaScript的DOMParser等。 - 工具如XMLSpy、Notepad++的XML插件,用于编辑、格式化和验证XML文档。 通过深入理解和实践这些操作方式,...

    springboot 在xml里读取yml的配置信息的示例代码

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans ...

    cxf-webservice复杂类型

    本主题将深入探讨CXF如何处理像Map这样的Java集合类,以及其他不能直接通过标准XML Schema(如XSD)表示的复杂数据结构。 **一、CXF与复杂类型** 1. **XML与复杂类型映射**:CXF使用JAXB(Java Architecture for ...

    2009阿里巴巴笔试题 java

    12. XML Schema 中队与,和的描述,哪个正确? 答案:<xs:choice> 元素用于定义可选的元素或组,<xs:sequence> 元素用于定义顺序元素的序列。 13. 下面哪个框架可以实现 Webservice? 答案:Axis、XFire 和 Apache...

    简单的WebService

    4. **jaxb-xjc-2.0.jar**:JAXB的XJC工具,用于从XML Schema生成Java类,帮助构建符合WSDL的服务。 5. **jaxen-1.1-beta-9.jar**:Jaxen是一个XPath引擎,允许在多种XML API中执行XPath表达式,可能会在解析WSDL或...

    expat-2.2.5.tar.bz2

    此外,由于expat库本身并不支持XML的验证,如果需要验证XML文档是否符合特定的XML Schema,开发者可能需要结合其他工具或库。 总结起来,expat-2.2.5.tar.bz2是一个在Linux环境中用C语言编写的XML解析库,通过事件...

    java面试题综合

    在Java面试中,面试官通常会关注候选人的基础知识、技术深度、实战经验以及问题解决能力。以下是一些常见的Java面试知识点: 1. 购物车实现:购物车功能通常涉及数据结构(如ArrayList或LinkedList)和状态管理(如...

    DTD 教程 DTD 实例

    在实际应用中,DTD 通常与 XML Schema 和 Relax NG 等其他更现代的结构化语言一起被考虑,以提供更强大和灵活的文档定义能力。学习和实践 DTD,能够帮助你更好地理解和处理 XML 文档的结构和验证。

Global site tag (gtag.js) - Google Analytics