`

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>

分享到:
评论

相关推荐

    XSD使用dom4j校验XML

    总之,DOM4J结合XSD提供了一种高效且灵活的方式来验证XML文件的结构和内容。这对于保证数据交换的准确性和一致性具有重要意义,特别是在需要处理大量XML数据的系统中。理解和掌握这一技术,能够帮助开发者提高代码的...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    5. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确性。 6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在...

    xml dom,sax解析,schema验证

    XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web...对于初学者,理解DOM和SAX解析的原理,以及如何使用Xerces-C++进行XML Schema验证,是深入学习XML技术的关键步骤。

    dom4j.jar,dom,xml,dom4j

    此外,DOM4J还包含了XML Schema和DTD(Document Type Definition)的支持,可以用于验证XML文档是否符合定义的结构。这对于确保数据的准确性和一致性至关重要。 DOM4J-1.6.1.jar是DOM4J的一个版本,发布于2006年。...

    dom4j dom4j dom4j dom4j

    6. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确性。 7. **XML编解码**:DOM4J提供了XML编码和解码的功能,可以将Java对象序列化为XML,也可以将XML反序列化为Java对象。 8. ...

    dom4j.jar,java xml

    DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的XML解析器,同时提供了丰富的API,使得在Java应用程序中...在实际开发中,掌握DOM4J的使用方法和技巧,能够提升XML相关任务的完成质量和效率。

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    5. 支持XML Schema和DTD:能够验证XML文档是否符合预定义的模式或规范。 接下来,DOM4J 2.0.0-ALPHA是后续的一个实验性版本,引入了一些新特性和改进。这个版本可能包含一些未成熟的功能,但预示着DOM4J未来的发展...

    dom4j 2.1.1

    3. 功能强大:DOM4J不仅支持基本的XML解析,还提供了高级特性,如XPath表达式支持、SAX和DOM的集成、XML Schema验证、XML编写和输出等。XPath是一种强大的查询语言,能够方便地定位XML文档中的节点。 4. 扩展性:...

    dom4j需要的包

    4. **XML Schema验证**:DOM4J可以对XML文档进行Schema验证,确保文档符合指定的XML Schema定义,保证数据的准确性和一致性。 5. **转换XML到其他格式**:DOM4J可以将XML转换为Java对象,也可以将Java对象转换为XML...

    XML解析技术DOM4J解析

    DOM4J不仅在功能上超越了基本的XML文档表示,还融合了一系列高级特性,如集成的XPath支持、XML Schema验证以及用于处理大型文档或流式文档的基于事件的处理机制。 #### 功能特性详解 **1. 集成的XPath支持** DOM4...

    java中dom4j读写XML

    DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理XML的强大工具。学习和掌握DOM4J,能够极大地提高开发效率,特别是在需要频繁处理XML数据的场景下。

    dom4j解析xml文件必备jar包

    DOM4J可以与Xerces一起工作,以提供更全面的XML处理能力,特别是当需要进行XML Schema验证时。 使用这些库文件,开发者可以轻松构建XML处理程序。例如,你可以使用DOM4J来读取XML文件,通过Jaxen执行XPath查询来...

    Dom4j解析XML+使用简介

    3. **XML Schema验证**: Dom4j提供API来验证XML文档是否符合特定的XML Schema定义。 4. **DOM4J与JAXB集成**: 两者结合可以方便地进行XML到Java对象的映射,以及反之。 **五、Dom4j的优势** 1. **简洁API**: Dom4...

    dom4j使用简介

    **DOM4J使用简介** DOM4J 是一个强大的 Java 库,专为处理 XML 文档而设计。它提供了丰富的 API,使得在 Java 中解析、创建、修改 XML 文件变得简单高效。DOM4J 不仅支持 DOM(文档对象模型)和 SAX(简单API for ...

    dom4j.jar包,java解析xml dom4j.jar包

    - **XML Schema支持**:能够处理XML Schema文档,用于验证XML文档的结构和数据。 - **SAX和DOM兼容**:DOM4J可以与SAX和DOM API无缝集成,使开发者在不同解析器间切换更加方便。 - **便捷的文档操作**:提供了一整套...

    dom4j解析XML的两个JAR包(dom4j-1.6.1.jar 和 jaxen.jar)

    4. **XML Schema和DTD处理**:DOM4J可以验证XML文档是否符合指定的XML Schema或者DTD,确保数据的准确性和一致性。 5. **便捷的API**:DOM4J的API设计得直观易用,使得XML编程变得更加友好,降低了学习曲线。 ...

    dom4j-1.6.1.jar

    6. **XML Schema支持**:dom4j可以处理XML Schema定义,帮助验证XML文档是否符合指定的Schema规则。 **性能优势** 相比Java标准库中的DOM和SAX解析器,dom4j在许多方面具有性能优势。例如,它的API设计更加面向...

    dom4j.jar 解析xml文件的最佳工具

    - **XML Schema验证**:DOM4J可以验证XML文档是否符合指定的XML Schema,确保数据的正确性。 在提供的压缩包中,`dom4j-full.jar`是DOM4J的完整版本,包含了所有必需的类和资源。`license.txt`文件则包含了DOM4J的...

    java Dom4j 无敌连环解析XML工具类

    DOM4J不仅限于这些基本操作,还支持XPath表达式、XML Schema验证、事件驱动的SAX解析、StAX解析以及转换为其他格式(如HTML或CSV)。通过熟练掌握DOM4J,你可以高效地处理各种XML任务,从而提高你的Java项目中的XML...

    dom4j(2.1.1+ 2.0.2+ 1.6.1).zip

    - **XML Schema支持**:可以验证XML文档是否符合特定的XML Schema定义。 - **文档处理**:支持命名空间、DTD和XSLT转换,提供完整的XML文档处理功能。 **应用场景** - **Web服务开发**:在构建和解析SOAP消息时,...

Global site tag (gtag.js) - Google Analytics