- 浏览: 71522 次
- 性别:
- 来自: 大连
最新评论
-
Heart.X.Raid:
//非递归后序遍历二叉树
void aftorder_t ...
树的遍历 -
zhangjunji111:
airlink 写道建议你再加个0来循环。
我的测试结果是10 ...
Spring的获取Bean的性能测试。 -
airlink:
建议你再加个0来循环。我的测试结果是10倍以上的差距。spri ...
Spring的获取Bean的性能测试。 -
rmn190:
结果中哪一个是C++的,哪一个Java的呢? 楼主最好用一个t ...
简单的c++排序跟java的性能比较。仅仅学习。 -
moshalanye:
每个对象都有一个隐含锁静态对象属于Class对象,非晶态对象属 ...
Java里面的同步跟oracle的锁的联想
基于dom方式的dom4j和jdom以及JDK提供的dom方式,都是基于树形结构把xml文本数据读入内存后检索或修改的。
而sax方式是以缓存的方式流读入的方式,检索输入的文本信息。用方式通知实现方法显示数据的。
所以当文件较大时候,就会出现性能和内存溢出(outofMemoryError)了。
以上是本人的自己的理解,仅供参考,具体的信息还请参考官方文档。
<?xml version="1.0" encoding="utf-8"?>
<schoolList>
<school id="10001" name="一中" >1000人</school>
<school id="10002" name="二中" >2000人</school>
<school id="10003" name="三中" >3000人</school>
<school id="10004" name="四中" >4000人</school>
</schoolList>
package com.liuxt.xml.tutorial;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DomParse {
public static String getTypeName(short value){
switch(value){
case Node.ELEMENT_NODE: return "ELEMENT_NODE";
case Node.ATTRIBUTE_NODE: return "ATTRIBUTE_NODE";
case Node.CDATA_SECTION_NODE: return "CDATA_SECTION_NODE";
case Node.COMMENT_NODE: return "COMMENT_NODE";
case Node.DOCUMENT_FRAGMENT_NODE: return "DOCUMENT_FRAGMENT_NODE";
case Node.DOCUMENT_NODE: return "DOCUMENT_NODE";
case Node.ENTITY_NODE: return "ENTITY_NODE";
case Node.TEXT_NODE: return "TEXT_NODE";
}
return null;
}
public static void main(String arge[]) {
long beginTime = System.currentTimeMillis();
DocumentBuilderFactory factory;
DocumentBuilder builder;
try {
File f = new File("xml/school.xml");
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList schoolList = doc.getElementsByTagName("school");
Node schoolNode,idNode,nameNode;
for (int i = 0; i < schoolList.getLength(); i++) {
schoolNode=schoolList.item(i);
showNodeInfo(schoolNode);
idNode=schoolNode.getAttributes().getNamedItem("id");
showNodeInfo(idNode);
nameNode=schoolNode.getAttributes().getNamedItem("id");
showNodeInfo(nameNode);
}
} catch (Exception e) {
e.printStackTrace();
}
showTime(beginTime);
}
private static void showTime(long lasting) {
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + " 毫秒");
}
private static void showNodeInfo(Node schoolNode) {
String nodeName;
String nodeValue;
short nodeType;
nodeType=schoolNode.getNodeType();
nodeName=schoolNode.getNodeName();
nodeValue=schoolNode.getNodeValue();
System.out.println("node Type is :"+getTypeName(nodeType));
System.out.println("node name is :"+nodeName);
System.out.println("node value is :"+nodeValue);
}
}
package com.liuxt.xml.tutorial;
import java.util.Iterator;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class JdomParse {
public static void main(String[] args) {
try {
Document document = new SAXBuilder().build("xml/school.xml");
Element schools = document.getRootElement();
Iterator it = schools.getChildren().iterator();
while (it.hasNext()) {
Element school = (Element) it.next();
String id=school.getAttributeValue("id");
String name=school.getAttributeValue("name");
System.out.println("id:"+id +" name:"+name);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.liuxt.xml.tutorial;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SaxParse extends DefaultHandler {
java.util.Stack tags = new java.util.Stack();
public SaxParse() {
super();
}
public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
DefaultHandler reader = new SaxParse();
sp.parse(new InputSource("xml/school.xml"), reader);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)
+ " 毫秒");
}
public void characters(char ch[], int start, int length)
throws SAXException {
String tag = (String) tags.peek();
if (tag.equals("school")) {
System.out.println("学校人数:" + new String(ch, start, length));
}
}
@SuppressWarnings("unchecked")
public void startElement(String uri, String localName, String qName,
Attributes attrs) {
tags.push(qName);
if(qName.equals("school")){
System.out.println(qName);
System.out.println("id:"+attrs.getValue("id"));
System.out.println("name:"+attrs.getValue("name"));
}
}
}
而sax方式是以缓存的方式流读入的方式,检索输入的文本信息。用方式通知实现方法显示数据的。
所以当文件较大时候,就会出现性能和内存溢出(outofMemoryError)了。
以上是本人的自己的理解,仅供参考,具体的信息还请参考官方文档。
<?xml version="1.0" encoding="utf-8"?>
<schoolList>
<school id="10001" name="一中" >1000人</school>
<school id="10002" name="二中" >2000人</school>
<school id="10003" name="三中" >3000人</school>
<school id="10004" name="四中" >4000人</school>
</schoolList>
package com.liuxt.xml.tutorial;
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DomParse {
public static String getTypeName(short value){
switch(value){
case Node.ELEMENT_NODE: return "ELEMENT_NODE";
case Node.ATTRIBUTE_NODE: return "ATTRIBUTE_NODE";
case Node.CDATA_SECTION_NODE: return "CDATA_SECTION_NODE";
case Node.COMMENT_NODE: return "COMMENT_NODE";
case Node.DOCUMENT_FRAGMENT_NODE: return "DOCUMENT_FRAGMENT_NODE";
case Node.DOCUMENT_NODE: return "DOCUMENT_NODE";
case Node.ENTITY_NODE: return "ENTITY_NODE";
case Node.TEXT_NODE: return "TEXT_NODE";
}
return null;
}
public static void main(String arge[]) {
long beginTime = System.currentTimeMillis();
DocumentBuilderFactory factory;
DocumentBuilder builder;
try {
File f = new File("xml/school.xml");
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList schoolList = doc.getElementsByTagName("school");
Node schoolNode,idNode,nameNode;
for (int i = 0; i < schoolList.getLength(); i++) {
schoolNode=schoolList.item(i);
showNodeInfo(schoolNode);
idNode=schoolNode.getAttributes().getNamedItem("id");
showNodeInfo(idNode);
nameNode=schoolNode.getAttributes().getNamedItem("id");
showNodeInfo(nameNode);
}
} catch (Exception e) {
e.printStackTrace();
}
showTime(beginTime);
}
private static void showTime(long lasting) {
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + " 毫秒");
}
private static void showNodeInfo(Node schoolNode) {
String nodeName;
String nodeValue;
short nodeType;
nodeType=schoolNode.getNodeType();
nodeName=schoolNode.getNodeName();
nodeValue=schoolNode.getNodeValue();
System.out.println("node Type is :"+getTypeName(nodeType));
System.out.println("node name is :"+nodeName);
System.out.println("node value is :"+nodeValue);
}
}
package com.liuxt.xml.tutorial;
import java.util.Iterator;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class JdomParse {
public static void main(String[] args) {
try {
Document document = new SAXBuilder().build("xml/school.xml");
Element schools = document.getRootElement();
Iterator it = schools.getChildren().iterator();
while (it.hasNext()) {
Element school = (Element) it.next();
String id=school.getAttributeValue("id");
String name=school.getAttributeValue("name");
System.out.println("id:"+id +" name:"+name);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.liuxt.xml.tutorial;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class SaxParse extends DefaultHandler {
java.util.Stack tags = new java.util.Stack();
public SaxParse() {
super();
}
public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
DefaultHandler reader = new SaxParse();
sp.parse(new InputSource("xml/school.xml"), reader);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)
+ " 毫秒");
}
public void characters(char ch[], int start, int length)
throws SAXException {
String tag = (String) tags.peek();
if (tag.equals("school")) {
System.out.println("学校人数:" + new String(ch, start, length));
}
}
@SuppressWarnings("unchecked")
public void startElement(String uri, String localName, String qName,
Attributes attrs) {
tags.push(qName);
if(qName.equals("school")){
System.out.println(qName);
System.out.println("id:"+attrs.getValue("id"));
System.out.println("name:"+attrs.getValue("name"));
}
}
}
- xmlparse.zip (150.8 KB)
- 下载次数: 10
发表评论
-
Java里面的同步跟oracle的锁的联想
2009-07-16 08:21 1116暂时不讨论。不明白 -
想做一个JMSServer,实现10000/s可以吗?
2009-07-02 17:51 970本贴已经删除,有很多东西需要学习。谢谢大大家给予的建议和批评啊 ... -
Spring的事务管理例子代码
2009-06-27 10:29 3366事务管理: 分global事务管理和local事务管理, ... -
Java String中的hashCode函数
2009-06-27 09:43 4219String 类中的hash函数如下: public ... -
java中HashCode的作用和Map的实现结构
2009-06-25 22:50 3826Map 是一种数据结构,用来实现key和value 的映射。通 ... -
使用Spring后会带来什么好处
2009-06-23 16:20 8831 为你的项目增加一个管家,你不必写很多的代码去实现一些框架已 ... -
jboss EJB
2009-06-15 14:39 744暂时不讨论。不明白 -
简单的归并排序算法例子
2009-06-14 21:36 1008import java.util.ArrayList;impo ... -
Jboss消息中间件跟IBM MQ的比较
2009-06-12 21:28 1550简单说几点. 1 jboss消息以java编写,嵌入到jbo ... -
Jboss message point to point
2009-06-12 21:17 844下面的例子程序是从Jbos ... -
Jboss SubscriberClient 主动式接受消息
2009-06-11 21:35 660下载jboss后面,按照默认启动就可以。 packag ... -
http报文
2009-06-11 21:09 2519HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII ... -
面向对象的三个特征
2009-06-11 20:52 735面向对象的三个基本特征是:封装、继承、多态。 Th ... -
java的同样排序函数的执行效率
2009-06-11 20:50 1223package com.liuxt.sort; import ... -
apache ab 性能测试
2009-06-10 20:22 1425测试结果的说明:参考文章:http://www.phpchin ... -
java虚拟机规范 3.5 运行期数据区
2009-06-10 14:35 884http://java.sun.com/docs/books/ ... -
java SQL注入分析程序
2009-06-09 22:11 1887DROP TABLE IF EXISTS `user`;CRE ... -
java virtural machine data type
2009-06-08 16:35 645data ... -
memcached 的linux配置
2009-06-03 22:45 640详细参选下面的连接: http://www.ccvita.co ... -
memcached 的java 客户端的简单测试代码
2009-06-03 22:42 1506import java.io.IOException; imp ...
相关推荐
精短高效的XML解析器,纯C单一程序,应用于银行的国税库行横向联网接口系统中,稳定可靠,运行速度飞快,非相应的JAVA程序可比.此处为完整源码
XML用于保存及交换数据,与读取配置文件的类在同一包,或在WEB-INF(或其子目录下),// 读取配置文件获得一个输入流 InputStream is = Demo1.class.getResourceAsStream("/students.xml");// src目录下 // 1. 获得...
资源分类:Python库 所属语言:Python 资源全名:parse_landsat_xml-0.1.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
from xml.dom.minidom import parse, parseString from xml.etree import ElementTree import xml.dom.minidom Get XML String info 查询属性值 response:xml string tag:xml tag element:xml attribute def ...
这个源码演示了如何用SAX来parse标准的xml文件. SAX可以用来parse RSS feed
这是一款xml的解析器,c++很强大的。下了,绝不反悔。假一赔十.
用 XMLDOM 和 ADODB.Stream 实现base64编码解码实现代码,需要的朋友可以参考下。
java版完整xml增删改查 xmlParse_V1.0.0.1_20170907.jar,处理速度快,效率高,封装好,简单易使用,易理解,代码简洁。
Labview解析XML文件(LV2014) https://mp.csdn.net/console/editor/html/74164112
Nodejs: Using for Parsing the XML file from the program
YuNetSurf is a HTML5 parser and tree builder with CSS3 tokeniser, parser, and selection engine for Delphi (Embarcadero / CodeGear / Borland). HTML Parser and Tree Builder Parse HTML, good and bad. ...
XML转化操作工具类
Android Build 时报错: java.io.IOException: Could not parse XML from android/accounts/annotati...Android构建时报错: app:lintVitalRelease[Fatal Error] :3:214: 与元素类型 “item” 相关联的 “name” ...
python库。 资源全名:parse_diqu-1.0.17.tar.gz
python库。 资源全名:parse-torrent-title-1.4.tar.gz
或者,如果您喜欢危险的生活,则可以通过加载浏览器中,并使用parseXml全局。 产品特点 返回表示XML文档的。 在Node.js和现代浏览器中都很好用。 当文档格式不正确时提供以及上下文。 大部分符合作为非验证解析器...
json_parse.js: This file contains an alternative JSON parse function that uses recursive descent instead of eval. json_parse_state: This files contains an alternative JSON parse function that uses a ...
遍历xml的所有节点
资源来自pypi官网。 资源全名:parse-shebang-0.0.1.tar.gz
资源分类:Python库 所属语言:Python 资源全名:parse-utils-0.0.5.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059