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>
分享到:
相关推荐
总之,DOM4J结合XSD提供了一种高效且灵活的方式来验证XML文件的结构和内容。这对于保证数据交换的准确性和一致性具有重要意义,特别是在需要处理大量XML数据的系统中。理解和掌握这一技术,能够帮助开发者提高代码的...
5. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确性。 6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web...对于初学者,理解DOM和SAX解析的原理,以及如何使用Xerces-C++进行XML Schema验证,是深入学习XML技术的关键步骤。
此外,DOM4J还包含了XML Schema和DTD(Document Type Definition)的支持,可以用于验证XML文档是否符合定义的结构。这对于确保数据的准确性和一致性至关重要。 DOM4J-1.6.1.jar是DOM4J的一个版本,发布于2006年。...
6. **XML Schema支持**:DOM4J能够处理XML Schema,进行XML文档的验证,确保数据的正确性。 7. **XML编解码**:DOM4J提供了XML编码和解码的功能,可以将Java对象序列化为XML,也可以将XML反序列化为Java对象。 8. ...
DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的XML解析器,同时提供了丰富的API,使得在Java应用程序中...在实际开发中,掌握DOM4J的使用方法和技巧,能够提升XML相关任务的完成质量和效率。
5. 支持XML Schema和DTD:能够验证XML文档是否符合预定义的模式或规范。 接下来,DOM4J 2.0.0-ALPHA是后续的一个实验性版本,引入了一些新特性和改进。这个版本可能包含一些未成熟的功能,但预示着DOM4J未来的发展...
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不仅在功能上超越了基本的XML文档表示,还融合了一系列高级特性,如集成的XPath支持、XML Schema验证以及用于处理大型文档或流式文档的基于事件的处理机制。 #### 功能特性详解 **1. 集成的XPath支持** DOM4...
DOM4J不仅提供了基本的XML操作,还支持命名空间、事件处理、DTD和XML Schema验证等功能,是Java开发中处理XML的强大工具。学习和掌握DOM4J,能够极大地提高开发效率,特别是在需要频繁处理XML数据的场景下。
DOM4J可以与Xerces一起工作,以提供更全面的XML处理能力,特别是当需要进行XML Schema验证时。 使用这些库文件,开发者可以轻松构建XML处理程序。例如,你可以使用DOM4J来读取XML文件,通过Jaxen执行XPath查询来...
3. **XML Schema验证**: Dom4j提供API来验证XML文档是否符合特定的XML Schema定义。 4. **DOM4J与JAXB集成**: 两者结合可以方便地进行XML到Java对象的映射,以及反之。 **五、Dom4j的优势** 1. **简洁API**: Dom4...
**DOM4J使用简介** DOM4J 是一个强大的 Java 库,专为处理 XML 文档而设计。它提供了丰富的 API,使得在 Java 中解析、创建、修改 XML 文件变得简单高效。DOM4J 不仅支持 DOM(文档对象模型)和 SAX(简单API for ...
- **XML Schema支持**:能够处理XML Schema文档,用于验证XML文档的结构和数据。 - **SAX和DOM兼容**:DOM4J可以与SAX和DOM API无缝集成,使开发者在不同解析器间切换更加方便。 - **便捷的文档操作**:提供了一整套...
4. **XML Schema和DTD处理**:DOM4J可以验证XML文档是否符合指定的XML Schema或者DTD,确保数据的准确性和一致性。 5. **便捷的API**:DOM4J的API设计得直观易用,使得XML编程变得更加友好,降低了学习曲线。 ...
6. **XML Schema支持**:dom4j可以处理XML Schema定义,帮助验证XML文档是否符合指定的Schema规则。 **性能优势** 相比Java标准库中的DOM和SAX解析器,dom4j在许多方面具有性能优势。例如,它的API设计更加面向...
- **XML Schema验证**:DOM4J可以验证XML文档是否符合指定的XML Schema,确保数据的正确性。 在提供的压缩包中,`dom4j-full.jar`是DOM4J的完整版本,包含了所有必需的类和资源。`license.txt`文件则包含了DOM4J的...
DOM4J不仅限于这些基本操作,还支持XPath表达式、XML Schema验证、事件驱动的SAX解析、StAX解析以及转换为其他格式(如HTML或CSV)。通过熟练掌握DOM4J,你可以高效地处理各种XML任务,从而提高你的Java项目中的XML...
- **XML Schema支持**:可以验证XML文档是否符合特定的XML Schema定义。 - **文档处理**:支持命名空间、DTD和XSLT转换,提供完整的XML文档处理功能。 **应用场景** - **Web服务开发**:在构建和解析SOAP消息时,...