`
fordfelix
  • 浏览: 4121 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

SAX&DOM

阅读更多
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&dom&sax&dom4j 文件解析的代码总结

    SAX&DOM感想1

    在处理XML文件时,SAX(Simple API for XML)和DOM(Document Object Model)是两种主要的解析方法,它们各自有其特点和适用场景。 **SAX解析**: SAX是一种基于事件驱动的解析方式。当XML文件被解析时,解析器会...

    dom4j基础入门文档(SAX,DOM,XPATH)

    【dom4j基础入门文档(SAX,DOM,XPATH)】 dom4j是一个流行的Java库,专门用于处理XML文档。相较于W3C DOM API,dom4j的优势在于它内置了本地XPath支持,使得XML文档的查询和操作更为简便。本文将深入介绍dom4j的...

    SAX与DOM之间的区别

    ### SAX与DOM之间的区别 #### 一、概述 在处理XML文档时,开发人员面临着一个基本的选择:使用DOM(文档对象模型)还是SAX(简单的API for XML)。这两种方法各有优势,选择哪一种取决于具体的应用场景和技术需求...

    dom4j下sax解析xml

    DOM(Document Object Model)和SAX(Simple API for XML)是两种主要的XML解析方法。在Java编程中,dom4j库提供了对这两种解析方式的支持。 **DOM解析**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构...

    dom解析和sax解析

    DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...

    xml 三种解析方式dom,sax,dom4j

    为了处理XML文档,有三种主要的解析方式:DOM、SAX和DOM4J。每种方法都有其特点和适用场景,下面将详细介绍这三种解析方式。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形...

    XML的两种解析sax和dom

    在处理XML文档时,有两大主流解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。这两种解析方式各有特点,适用于不同的场景。 1. SAX解析: SAX解析是一种事件驱动的解析方法,它逐行读取XML...

    Sax和Dom.doc

    ### SAX与DOM解析技术对比及应用场景 #### 一、引言 在XML开发过程中,DOM (Document Object Model) 和 SAX (Simple API for XML) 是两种常见的解析方式。这两种方法各有优势,适用于不同的场景。本文旨在深入探讨...

    用DOM SAX JDom dom4j 对xml文档解析实例

    本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...

    DOM4J_SAX_DOM_XML的实例

    DOM4J、SAX和DOM是处理XML文档的三种主要解析器或API,它们各有特点,适用于不同的场景。 1. DOM(Document Object Model) DOM是一种将XML文档转换为内存中的树形结构的模型,它允许开发者通过节点层次结构来访问...

    解析XML的dom、sax和dom4j的jar包

    在Java中,解析XML有多种方法,主要包括DOM、SAX和DOM4J。下面将详细介绍这三种解析方式及其对应的jar包。 1. DOM (Document Object Model) DOM是一种基于树形结构的XML解析方法,它将整个XML文档加载到内存中,...

    dom jdom sax dom4j 原理性能比

    本篇文章将探讨四种处理XML的Java库:DOM、JDOM、SAX和DOM4J,分析它们的原理、性能特点以及适用场景。 首先,我们来了解DOM(Document Object Model)。DOM是W3C组织定义的一种API,它将XML文档解析为一个树形结构...

    Java使用sax、dom、dom4j解析xml文档

    Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...

    XML四种解析方式------DOM SAX JDOM DOM4J

    在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...

    Jdom.chm & Dom4j.chm帮助文档

    1. **灵活性**:DOM4J不仅支持DOM,还支持SAX和STAX解析器,可以根据需求选择最适合的解析方式。 2. **XPath支持**:DOM4J内置了XPath表达式引擎,允许开发者通过简单的字符串查询XML文档的任意部分。 3. **XML ...

    sax,dom4j架包

    在这个过程中,SAX(Simple API for XML)和DOM4J是两种常用的Java解析器。 SAX(Simple API for XML)是一种基于事件驱动的解析方法。它不会一次性加载整个XML文档到内存中,而是逐行读取,遇到元素开始、结束、...

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    常见的 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解析实例和jar包,包括dom,sax,dom4j,jdom等方式 是学习Java的xml解析的好例子,包括相应的dom4j.jar,jdom.jar等,自己整理的,物超所值啊,...

Global site tag (gtag.js) - Google Analytics