本文的jar包及版本dom4j-1.6.1.jar,jaxen-1.1-beta-6.jar,xercesImpl-2.6.2.jar
Schema文件org/soft/resource/shiporder.xsd.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<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文件org/soft/resource/shiporder.xml.
<?xml version="1.0" encoding="ISO-8859-1"?>
<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>
package org.soft.test;
import java.io.InputStream;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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 {
/** log */
protected static final Log log = LogFactory.getLog(Dom4jTest.class);
/**
* @param args
*/
public static void main(String[] args) {
Dom4jTest dt = new Dom4jTest();
try {
Document doc = dt.read("/org/soft/resource/shiporder.xml");
Element element = dt.getRootElement(doc);
log.info(element.getPath());
} catch (DocumentException e) {
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
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 = this.getClass().getResourceAsStream(
"/org/soft/resource/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(this.getClass().getResourceAsStream(fileName));
return doc;
}
public Element getRootElement(Document doc) {
return doc.getRootElement();
}
}
分享到:
相关推荐
总之,DOM4J结合XSD提供了一种高效且灵活的方式来验证XML文件的结构和内容。这对于保证数据交换的准确性和一致性具有重要意义,特别是在需要处理大量XML数据的系统中。理解和掌握这一技术,能够帮助开发者提高代码的...
5. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确性。 6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在...
6. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确性。 7. **XML编解码**:DOM4J提供了XML编码和解码的功能,可以将Java对象序列化为XML,也可以将XML反序列化为Java对象。 8. ...
例如,你可以使用DOM4J来读取XML文件,通过Jaxen执行XPath查询来提取特定信息,然后使用DOM4J提供的方法更新XML文档内容。同时,Xerces可以确保XML文档遵循预定义的结构规则。 在实际开发中,将这些jar包添加到项目...
此外,DOM4J还包含了XML Schema和DTD(Document Type Definition)的支持,可以用于验证XML文档是否符合定义的结构。这对于确保数据的准确性和一致性至关重要。 DOM4J-1.6.1.jar是DOM4J的一个版本,发布于2006年。...
3. 功能强大:DOM4J不仅支持基本的XML解析,还提供了高级特性,如XPath表达式支持、SAX和DOM的集成、XML Schema验证、XML编写和输出等。XPath是一种强大的查询语言,能够方便地定位XML文档中的节点。 4. 扩展性:...
4. **XML Schema验证**:DOM4J可以对XML文档进行Schema验证,确保文档符合指定的XML Schema定义,保证数据的准确性和一致性。 5. **转换XML到其他格式**:DOM4J可以将XML转换为Java对象,也可以将Java对象转换为XML...
DOM4J则提供了一种轻量级的替代方案,它不仅支持DOM,还引入了SAX(Simple API for XML)和StAX(Streaming API for XML)的特性,使处理大型XML文件时性能更优。 DOM4J的主要特点包括: 1. **易于使用**:DOM4J的...
5. 支持XML Schema和DTD:能够验证XML文档是否符合预定义的模式或规范。 接下来,DOM4J 2.0.0-ALPHA是后续的一个实验性版本,引入了一些新特性和改进。这个版本可能包含一些未成熟的功能,但预示着DOM4J未来的发展...
- **XML Schema验证**:DOM4J可以验证XML文档是否符合指定的XML Schema,确保数据的正确性。 在提供的压缩包中,`dom4j-full.jar`是DOM4J的完整版本,包含了所有必需的类和资源。`license.txt`文件则包含了DOM4J的...
DOM4J不仅在功能上超越了基本的XML文档表示,还融合了一系列高级特性,如集成的XPath支持、XML Schema验证以及用于处理大型文档或流式文档的基于事件的处理机制。 #### 功能特性详解 **1. 集成的XPath支持** DOM4...
**Dom4j解析XML+使用简介** Dom4j是一个非常流行的Java库,专门用于处理XML...在提供的两个PDF文件中,"Dom4j使用简介.pdf"和"Dom4j解析XML.pdf"应该包含了更详尽的示例和教程,帮助读者进一步掌握Dom4j的使用技巧。
**DOM4J使用简介** DOM4J 是一个强大的 Java 库,专为处理 XML 文档而设计。它提供了丰富的 API,使得在 Java 中解析、创建、修改 XML 文件变得简单高效。DOM4J 不仅支持 DOM(文档对象模型)和 SAX(简单API for ...
DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理XML的强大工具。学习和掌握DOM4J,能够极大地提高开发效率,特别是在需要频繁处理XML数据的场景下。
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web...对于初学者,理解DOM和SAX解析的原理,以及如何使用Xerces-C++进行XML Schema验证,是深入学习XML技术的关键步骤。
- **XML Schema支持**:能够处理XML Schema文档,用于验证XML文档的结构和数据。 - **SAX和DOM兼容**:DOM4J可以与SAX和DOM API无缝集成,使开发者在不同解析器间切换更加方便。 - **便捷的文档操作**:提供了一整套...
dom4jAPI帮助文档.chm提供了关于DOM4J库的详细信息,包括如何创建、解析、修改XML文档,以及如何使用XPath进行查询。DOM4J以其简单易用的API和对SAX和DOM的全面支持,成为了Java开发者处理XML数据的首选工具。 ...
6. **XML Schema支持**:dom4j可以处理XML Schema定义,帮助验证XML文档是否符合指定的Schema规则。 **性能优势** 相比Java标准库中的DOM和SAX解析器,dom4j在许多方面具有性能优势。例如,它的API设计更加面向...
4. **XML Schema和DTD处理**:DOM4J可以验证XML文档是否符合指定的XML Schema或者DTD,确保数据的准确性和一致性。 5. **便捷的API**:DOM4J的API设计得直观易用,使得XML编程变得更加友好,降低了学习曲线。 ...
2. **创建Document**:解析XML文件,构建DOM4J的Document对象。这通常是通过`DocumentHelper.parseText()`或`SAXReader.read()`方法完成的。 ```java SAXReader reader = new SAXReader(); Document document = ...