order.dtd
<!ELEMENT orderlist (order+)>
<!ELEMENT order (address, receiper,date?,item+)>
<!ATTLIST order orderid ID #REQUIRED>
<!ELEMENT address (zipcode, province, city, street)>
<!ELEMENT receiper (firstname, lastame)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT item (gid,gname,price,count)>
<!ELEMENT zipcode (#PCDATA)>
<!ELEMENT province (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastame (#PCDATA)>
<!ELEMENT gid (#PCDATA)>
<!ELEMENT gname (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT count (#PCDATA)>
-------------------------------------
order.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE order SYSTEM "order.dtd">
<orderlist>
<order orderid="order001">
<address>
<zipcode>001</zipcode>
<province>shanghai</province>
<city>shanghai</city>
<street>zhejiang</street>
</address>
<receiper>
<firstname>Json</firstname>
<lastame>Simth</lastame>
</receiper>
<item>
<gid>001</gid>
<gname>Dom</gname>
<price>$200</price>
<count>3</count>
</item>
</order>
</orderlist>
-----------------------------------
SAX解析器
public static void main(String[] args)
//定义工厂 API,使应用程序能够配置和获取基于 SAX 的解析器以解析 XML 文档。
SAXParserFactory fac = SAXParserFactory.newInstance();
SAXParser parser = fac.newSAXParser();
parser.parse("src/order.xml", new myHandler());
-----------------------------------
class myHandler extends DefaultHandler {
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
StringBuffer sb = new StringBuffer();
sb.append("<" + qName );
for (int i = 0; i <attributes.getLength() ; i++) {
sb.append(" "+attributes.getQName(i) + "='");
sb.append(attributes.getValue(i)+ "'");
}
sb.append(">");
System.out.print(sb.toString());
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
String str = new String(ch,start,length);
System.out.print(str.toString());
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("</" + qName + ">");
}
@Override
public void endDocument() throws SAXException {
System.out.println("just over------------------------------");
}
@Override
public void startDocument() throws SAXException {
System.out.println("just start------------------------------");
}
}
*****************************************
DOM解析器
public static void main(String[] args)
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbf.newDocumentBuilder();
Document doc = builder.parse("src/order.xml");
Element root = doc.getDocumentElement();
String str = walkTree(root);
System.out.println(str);
-----------------------------------------
public static String walkTree(Element tree)
{
StringBuffer sb = new StringBuffer();
sb.append("<" + tree.getNodeName());
NamedNodeMap attrs = tree.getAttributes();
for (int i = 0; i < attrs.getLength(); i++) {
Node item = attrs.item(i);
sb.append(" "+item.getNodeName() + "=");
sb .append(item.getNodeValue());
}
sb.append(">");
NodeList children = tree.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
Node child = children.item(i);
//该节点为 Entity。
if(child.getNodeType() == Node.ELEMENT_NODE)
{
sb.append(walkTree((Element)child));
}else
{
sb.append(child.getTextContent());
}
}
sb.append("</"+tree.getNodeName()+">");
return sb.toString();
}
- 大小: 5.1 KB
分享到:
相关推荐
对于xml&dom&sax&dom4j 文件解析的代码总结
在处理XML文件时,SAX(Simple API for XML)和DOM(Document Object Model)是两种主要的解析方法,它们各自有其特点和适用场景。 **SAX解析**: SAX是一种基于事件驱动的解析方式。当XML文件被解析时,解析器会...
【dom4j基础入门文档(SAX,DOM,XPATH)】 dom4j是一个流行的Java库,专门用于处理XML文档。相较于W3C DOM API,dom4j的优势在于它内置了本地XPath支持,使得XML文档的查询和操作更为简便。本文将深入介绍dom4j的...
### SAX与DOM之间的区别 #### 一、概述 在处理XML文档时,开发人员面临着一个基本的选择:使用DOM(文档对象模型)还是SAX(简单的API for XML)。这两种方法各有优势,选择哪一种取决于具体的应用场景和技术需求...
DOM(Document Object Model)和SAX(Simple API for XML)是两种主要的XML解析方法。在Java编程中,dom4j库提供了对这两种解析方式的支持。 **DOM解析**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构...
DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...
为了处理XML文档,有三种主要的解析方式:DOM、SAX和DOM4J。每种方法都有其特点和适用场景,下面将详细介绍这三种解析方式。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形...
在处理XML文档时,有两大主流解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。这两种解析方式各有特点,适用于不同的场景。 1. SAX解析: SAX解析是一种事件驱动的解析方法,它逐行读取XML...
### SAX与DOM解析技术对比及应用场景 #### 一、引言 在XML开发过程中,DOM (Document Object Model) 和 SAX (Simple API for XML) 是两种常见的解析方式。这两种方法各有优势,适用于不同的场景。本文旨在深入探讨...
本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...
DOM4J、SAX和DOM是处理XML文档的三种主要解析器或API,它们各有特点,适用于不同的场景。 1. DOM(Document Object Model) DOM是一种将XML文档转换为内存中的树形结构的模型,它允许开发者通过节点层次结构来访问...
在Java中,解析XML有多种方法,主要包括DOM、SAX和DOM4J。下面将详细介绍这三种解析方式及其对应的jar包。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,...
本篇文章将探讨四种处理XML的Java库:DOM、JDOM、SAX和DOM4J,分析它们的原理、性能特点以及适用场景。 首先,我们来了解DOM(Document Object Model)。DOM是W3C组织定义的一种API,它将XML文档解析为一个树形结构...
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...
1. **灵活性**:DOM4J不仅支持DOM,还支持SAX和STAX解析器,可以根据需求选择最适合的解析方式。 2. **XPath支持**:DOM4J内置了XPath表达式引擎,允许开发者通过简单的字符串查询XML文档的任意部分。 3. **XML ...
在这个过程中,SAX(Simple API for XML)和DOM4J是两种常用的Java解析器。 SAX(Simple API for XML)是一种基于事件驱动的解析方法。它不会一次性加载整个XML文档到内存中,而是逐行读取,遇到元素开始、结束、...
常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...
java四种xml解析实例和jar包,包括dom,sax,dom4j,jdom等方式 java四种xml解析实例和jar包,包括dom,sax,dom4j,jdom等方式 是学习Java的xml解析的好例子,包括相应的dom4j.jar,jdom.jar等,自己整理的,物超所值啊,...