`

DOM4J使用schema验证XML

阅读更多

package com.tlq.dom4j;
import java.io.InputStream;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
  
public class Dom4jTest {   
 
    /**  
     * @param args  
     */  
    public static void main(String[] args) {   
        Dom4jTest dt = new Dom4jTest();   
        try {   
         //Document doc = dt.read("/org/soft/resource/shiporder.xml");  
         //直接传给它地址
         //Document doc = dt.read("E:/myworkspace/Dom4jTest_XSD/src/com/tlq/dom4j/shiporder2.xml");   
         Document doc = dt.read("/com/tlq/dom4j/shiporder.xml");   
            Element element = dt.getRootElement(doc);   
            System.out.println(element.getPath());
        } catch (DocumentException e) {   
            e.printStackTrace();   
        } catch (SAXException e) {   
            e.printStackTrace();   
        }   
  
    }   
  
    public Document read(String fileName) throws DocumentException,   
            SAXException {   
        SAXReader reader = new SAXReader(true);   
  
        EntityResolver resolver = new EntityResolver() {   
            public InputSource resolveEntity(String publicId, String systemId) {   
             //InputStream in = reader.read("/aa/shiporder3.xsd");   
                InputStream in = this.getClass().getResourceAsStream("/com/tlq/dom4j/shiporder.xsd");   
                return new InputSource(in);   
            }   
        };   
        reader.setEntityResolver(resolver);   
        reader.setFeature("http://xml.org/sax/features/validation", true);   
        reader.setFeature("http://apache.org/xml/features/validation/schema", true);   
        reader.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true);   
        // reader.setProperty(   
        // "http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",   
        // "shiporder.xsd");   
   //获得一个路役
       // Document doc = reader.read("E:/myworkspace/Dom4jTest_XSD/src/com/tlq/dom4j/shiporder2.xml");   
       //Document doc = reader.read(fileName);   
        Document doc = reader.read(this.getClass().getResourceAsStream(fileName));   
  
        return doc;   
    }   
  
    public Element getRootElement(Document doc) {   
        return doc.getRootElement();   
    }   
}  

 

 

 

 

XSD 文件

<?xml version="1.0" encoding="UTF-8" ?>  
  
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">      
    <xs:element name="name" type="xs:string" />  
    <xs:element name="address" type="xs:string" />  
    <xs:element name="city" type="xs:string" />  
    <xs:element name="country" type="xs:string" />  
    <xs:element name="title" type="xs:string" />  
    <xs:element name="note" type="xs:string" />  
    <xs:element name="quantity" type="xs:positiveInteger" />  
    <xs:element name="price" type="xs:decimal" />  
  
    <xs:attribute name="orderid">  
        <xs:simpleType>  
            <xs:restriction base="xs:string">  
                <xs:pattern value="[0-9]{6}"/>  
            </xs:restriction>  
        </xs:simpleType>  
    </xs:attribute>  
  
    <xs:element name="shiporder">  
        <xs:complexType>  
  
            <xs:sequence>  
                <xs:element name="orderperson" type="xs:string" />  
  
                <xs:element name="shipto">  
                    <xs:complexType>  
                        <xs:sequence>  
                            <xs:element ref="name" />  
                            <xs:element ref="address" />  
                            <xs:element ref="city" />  
                            <xs:element ref="country" />  
                        </xs:sequence>  
                    </xs:complexType>  
                </xs:element>  
  
                <xs:element name="item" maxOccurs="unbounded">  
                    <xs:complexType>  
                        <xs:sequence>  
                            <xs:element ref="title" />  
                            <xs:element ref="note" minOccurs="0" />  
                            <xs:element ref="quantity" />  
                            <xs:element ref="price" />  
                        </xs:sequence>  
                    </xs:complexType>  
                </xs:element>  
  
            </xs:sequence>  
            <xs:attribute ref="orderid" use="required" />  
        </xs:complexType>  
    </xs:element>  
</xs:schema>

 

 

XML文件

<?xml version="1.0" encoding="UTF-8"?>  
  
<shiporder orderid="889923"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:noNamespaceSchemaLocation="shiporder.xsd">  
    <orderperson>George Bush</orderperson>  
    <shipto>  
        <name>John Adams</name>  
        <address>Oxford Street</address>  
        <city>London</city>  
        <country>UK</country>  
    </shipto>  
    <item>  
        <title>Empire Burlesque</title>  
        <note>Special Edition</note>  
        <quantity>1</quantity>  
        <price>10.90</price>  
    </item>  
    <item>  
        <title>Hide your heart</title>  
        <quantity>1</quantity>  
        <price>9.90</price>  
    </item>  
</shiporder>

分享到:
评论

相关推荐

    xml dom,sax解析,schema验证

    xerces-c++ 2.8应用,主要报错xml文件的解析,创建,修改保存。schema验证的。希望对初学者有所帮助.

    Java通过XML Schema校验XML

    ava校验XML是件很扯淡的事情,... 下面不扯这些废话了,我用DOM4j结合javaxml api使用XSD来校验一个xml有效性,下面这个例子虽然和蹩脚,但是也费了一番功夫,放出来大家研究吧,有更好的实现也希望能和我一同分享。

    dom4.jar包,高效xml解析

    dom4j是现在见到的解析xml效率最高的jar包,并且支持XPath定位,xml schema验证等功能。

    DOMCount.rar_Schema C_XML程序开发_personal_xml list_解析xml

    自己开发的XML DOM计数程序DOMCount,使用DOM API解析XML文件,构造DOM树,然后遍历DOM树并计算元素个数(仅使用一个API调用)。 DOMCount解析XML文件,计算其元素数并打印。 用法: DOMCount [options]&lt;XML file...

    [XML入门经典(第4版)].(Beginning.XML.4th.Edition).(美)亨特,(美)拉夫特,(美)福思特.扫描版.pdf

    中文名: XML入门经典(第四版) 原名: Beginning XML 4th Edition 作者: (美)亨特 (美)拉夫特 (美)福思特 译者: 吴文国 资源格式: PDF 版本: 扫描版 出版社: (美)亨特 (美)拉夫特 (美)福思特 书号: 9787302194651 发行...

    XML技术 ppt

    126页 XML 简介 编写 XML 文档 使用 DTD 验证 XML 文档 使用 Schema 定义和验证 XML 文档 了解 XML 命名空间 使用 XSLT 转换 XML 文档 使用 DOM 读取和操作 XML 文档 使用 SAX 读取 XML 文档

    C# XML入门经典

    主要内容包括:XML语法和格式良好的XML,XML命名空间,利用DTD和XML Schema进行XML验证,使用SOAP和Web服务,以及运用ADO.NET进行数据库访问等。本书还用两个案例分析来展示XML的具体应用。  本书适合于有一定的...

    tinyxml+tinyxpath组合编程套件,很好的编程工具,都是源码

    TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器 一. XML解析模型: 目前XML的解析主要有两大模型:SAX和DOM。 SAX是基于事件的,其基本工作流程是分析XML文档,当发现了一个新的元素时,产生一个对应...

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

    可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。首先有两点是需要肯定的:  第一:XML肯定是未来的...

    C#XML入门经典 C#编程人员必备的XML技能.part2

    XML概述 &lt;br&gt;2.1 XML的概念 2.1.1 XML元素 2.1.2 XML属性 2.1.3 XML解析器...使用注释 2.3 验证XML文档的有效性 2.3.1 文档类型定义 2.3.2 XML Schema 2.3.3 XML编码 2.4 小结 &lt;br&gt;第3章...

    W3school_20100923.chm

    2010年09月23日 的版本。 ...XHTML XHTML 1.0 ...TCP/IP CSS 2.0 XML教程 JavaScript XML jQuery ...XML DOM HTML DOM XSL XML DOM ...Schema XSL-FO ...HTML DOM HTML 实例 ... 验证XML 验证WML

    W3school CHM 2011.03 最新版

    HTML教程 HTML XHTML CSS TCP/IP XML教程 XML XSL XSLT XSL-FO XPath XQuery XLink XPointer DTD Schema XML DOM XForms SOAP WSDL RDF RSS ...HTML DOM ...HTML DOM XML DOM ...XML DOM 实例 ...验证XML 验证

    w3school最新版11.12.6.chm

    最新版w3school帮助文档,集成了最新的jQuery 高压缩 只有不足6M的文件 包含的技术有: ...XHTML CSS TCP/IP XML教程 ...XML DOM ...Schema ...HTML DOM ...HTML DOM XML DOM ...HTML DOM 实例 ...验证XML 验证WML

    W3school.chm

    XHTML CSS TCP/IP XML教程 XML XSL XSLT XSL-FO ...Schema XML DOM ...HTML DOM ...通过使用我们的在线编辑器,你可以编辑这些例子,并对代码进行实验。...快捷易懂的学习方式 一寸光阴一寸金,因此,...验证XML 验证WML

    w3school chm

    哟两个w3school chm,一个版本比较新,一个是旧版,可以结合使用 ... ... XHTML CSS ...Schema ...XML DOM ...HTML DOM ...通过使用我们的在线编辑器,你可以编辑这些例子,并对代码进行实验。...验证XML 验证WML

    phpunit-schema:PHPUnit的架构文件

    只需使用xmllint类的工具来读取您的配置并根据Schema对其进行验证,例如 xmllint --schema phpunit.xsd phpunit.xml 如果要从PHP文件进行验证,则可以使用DOM扩展名,例如 $dom = new DOMDocument; $dom-&gt;load('/...

    基于Java的XML解析与反射设计模式.doc

    xstream可以完美转换xml,与以往的解析xml工具dom相比,xstream是一个易用的、开源 的库,使用起来简单、小巧,容易理解,可以轻易的将java对象和xml文档相互转换,而 且可以修改某个特定的属性和节点名称。...

    论文研究-数据验证通用模板的设计.pdf

    正式文件的数据类型多样化导致了数据有效性验证的复杂化,这已经对信息化交流产生越来越大的...针对这个问题提出一种新的数据验证通用模板,这种模板采用新的验证机制,结合XML,XPath,Java,DOM来验证数据的有效性。

Global site tag (gtag.js) - Google Analytics