All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
如何让网站运营不止停留在SEO_优化技巧_seo学堂
ASP.NET获取汉字拼音的首字母_[Asp.Net教程]
有用的SQL语句(删除重复记录,收缩日志)_[SQL,Server教程]
PHP解析XML,元素结构范例_php资料_编程技术
什么是垂直搜索?_php资料_编程技术
Delphi类似Windows xp的程序界面
Asp.net,2.0,Treeview,无限级无刷新示例_[Asp.Net教程]
AJAX的JavaScript的反射机制_[Asp.Net教程]
.net组件开发系列(—)之武术系列-马步功之基本功_[Asp.Net教程]
PHP技巧:PHP中几种删除目录的三种方法_[PHP教程]
Reading number is top 10 pictures
Sora aoi in China4
运动的范冰冰3
Sora aoi mirror memorial classics5
Poor doll, hand job was caught the currently in effect by his dad
美奂绝伦的风景
China telecom 114 spokesman MeiYanXu2
Magnificent cloud1
Desktop Wallpapers1
战场废物1
From China fortress sora aoi3
Download software ranking
Visual C++界面编程技术
Professional killers2 for Android
美女写真2
金山office2007
Eclipse-CALMSANNY (second edition)
Unix video tutorial2
Call Of Duty2
Eclipse 4.2.2 For Win32
网络管理员第三版
Detective task-the top secret prostitution files
归海一刀 published in(发表于) 2014/3/20 5:13:49 Edit(编辑)
xml的解析处理以及其他_[XML教程]

xml的解析处理以及其他_[XML教程]

xml的解析处理以及其他_[XML教程]

dom和SAX使两种主流的选择,还有JDOM,DOM4J做的不错。

  DOM解析器把XML文档转化为一个包含其内容的树,并可以对树进行遍历。用DOM解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和修改树中的元素。然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。


例: import java.io.*;import java.util.*;import org.w3c.dom.*;import javax.xml.parsers.*;


  public class MyXMLReader{


  public static void main(String arge[]){


  long lasting =System.currentTimeMillis();


  try{


   File f=new File("data_10k.xml");


   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();


   DocumentBuilder builder=factory.newDocumentBuilder();


   Document doc = builder.parse(f);


   NodeList nl = doc.getElementsByTagName("VALUE");


   for (int i=0;i<nl.getLength();i++){


    System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());


    System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());


  }


  }catch(Exception e){


   e.printStackTrace();


  }


  SAX解析器采用了基于事件的模型,它在解析XML文档的时候可以触发一系列的事件,当发现给定的tag的时候,它可以激活一个回调方法,告诉该方法制定的标签已经找到。SAX对内存的要求通常会比较低,因为它让开发人员自己来决定所要处理的tag。特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。但用SAX解析器的时候编码工作会比较困难,而且很难同时访问同一个文档中的多处不同数据。


例: import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*;


  public class MyXMLReader extends DefaultHandler {


  java.util.Stack tags = new java.util.Stack();


  public MyXMLReader() {


  super();}


  public static void main(String args[]) {


  long lasting = System.currentTimeMillis();


  try {


   SAXParserFactory sf = SAXParserFactory.newInstance();


   SAXParser sp = sf.newSAXParser();


   MyXMLReader reader = new MyXMLReader();


   sp.parse(new InputSource("data_10k.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("NO")) {


   System.out.print("车牌号码:" + new String(ch, start, length));}if (tag.equals("ADDR")) {


  System.out.println("地址:" + new String(ch, start, length));}}


  public void startElement(String uri,String localName,String qName,Attributes attrs) {


  tags.push(qName);}}


  注意:当xml数据的形式作为传递时,要获取一条条的纪录是比较适宜于采用dom,虽然它对系统(内存,性能等)有较高的要求,但是一般的服务器都可满足上G的xml文档的处理。


当需要对xml的某些内容或某些节点的特定访问时,或需要一及时地事件相应时,可以用sax来处理。它是基于时间处理机制的,在编程时,通过重载一些事件方法,来获得对xml文档的处理。


  有关xml的编码,InputStreamReader和xmlReader的关系:


   通常的DOM和SAX对于用ascii编码的文档,通过用InputStreamReader读入xml文档,后变成了unicode码,然后不能用 XMlREader来处理,出现错误的原因是:遇到无效的unicode的字符。(当你用system.out.println()输出是没有任何问题,因为它能自动转成本地机的编码)。


解决的方法:


BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(f),"ISO8859-1"));


这样就可以限定它的编码,这样就没有问题。


  String 的长度问题:String 类型安标准来说没有长度限制,但是一般jdk中String的最大长度是4G。


  String与BufferedString关系:在不涉及到字符串有效的大量处理,通常使用String. BufferedString在处理字符串的大量处理上有优势







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.