三九宝宝网宝宝百科宝宝知识

如何用SAX方式解析这样的xml

03月18日 编辑 39baobao.com

[如何用英语请客]Friends like to treat each other当你想请别人吃一个冰淇淋时,该如何说呢?很简单,只要一句“I'll treat you to ice cream.”就行了。这天,Susan就请她的中国朋友Maymay和Lin...+阅读

SAXReader saxReader = new SAXReader();

Document document = saxReader.read(inputXml);

接下来就是解析了

List list = document.selectNodes("//article/level" );

Iterator iter=list.iterator();

while(iter.hasNext()){

Attribute attribute=(Attribute)iter.next();

if(attribute.getValue().equals("Intermediate"))

attribute.setValue("Introductory");

}

另一个标签解析

list = document.selectNodes("//article/date" );

iter=list.iterator();

while(iter.hasNext()){

Attribute attribute=(Attribute)iter.next();

if(attribute.getValue().equals("December-2001"))

attribute.setValue("October-2002");

}

怎么用sax解析树状的

import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.io.SAXReader;public class Test{public static void main(String args[]){try { Document doc= new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("SaxTest.xml")); Element elt = (Element)doc.selectObject("//colname"); System.out.println(" "+elt.getText());} catch (DocumentException e) { e.printStackTrace();}}}DOM4J...

java如何用sax创建和解析单标签xml

import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler;/** * * SAX文档解析 * * author bin 2013-11-18 */ public class SaxDemoImpl { public void createXml(String fileName) { System.out.println(">"); } public void parserXml(String fileName) { SAXParserFactory saxfac = SAXParserFactory.newInstance(); try { SAXParser saxparser = saxfac.newSAXParser(); InputStream is = new FileInputStream(fileName); saxparser.parse(is, new MySAXHandler()); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } class MySAXHandler extends DefaultHandler { boolean hasAttribute = false; Attributes attributes = null; public void startDocument() throws SAXException { System.out.println("文档开始打印了"); } public void endDocument() throws SAXException { System.out.println("文档打印结束了"); } public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { System.err.println(uri + " || " + localName + " || " + qName + " || " + attributes); /*if (qName.equals("employees")) { return; } if (qName.equals("employee")) { System.out.println(qName); } if (attributes.getLength() >0) { this.attributes = attributes; this.hasAttribute = true; }*/ } public void endElement(String uri, String localName, String qName) throws SAXException { if (hasAttribute & (attributes != null)) { for (int i = 0; i System.out.print(attributes.getQName(0) + " ssss " + attributes.getValue(0)); } } } public void characters(char[] ch, int start, int length) throws SAXException { System.out.println(new String(ch, start, length)); }

使用sax方式解析xml时从哪个方法中得到标签之间的文本

SAX概念

SAX是Simple API for XML的缩写,它并不是由W3C官方所提出的标准,可以说是“民间”的事实标准。实际上,它是一种社区性质的讨论产物。虽然如此,在XML中对SAX的应用丝毫不比DOM少,几乎所有的XML解析器都会支持它。

与 DOM比较而言,SAX是一种轻量型的方法。我们知道,在处理DOM的时候,我们需要读入整个的XML文档,然后在内存中创建DOM树,生成DOM树上的每个Node对象。当文档比较小的时候,这不会造成什么问题,但是一旦文档大起来,处理DOM就会变得相当费时费力。特别是其对于内存的需求,也将是成倍的增长,以至于在某些应用中使用DOM是一件很不划算的事(比如在applet中)。这时候,一个较好的替代解决方法就是SAX。

SAX 在概念上与DOM完全不同。首先,不同于DOM的文档驱动,它是事件驱动的,也就是说,它并不需要读入整个文档,而文档的读入过程也就是SAX的解析过程。所谓事件驱动,是指一种基于回调(callback)机制的程序运行方法。(如果你对Java新的代理事件模型比较清楚的话,就会很容易理解这种机制了)

在XMLReader接受XML文档,在读入XML文档的过程中就进行解析,也就是说读入文档的过程和解析的过程是同时进行的,这和DOM区别很大。解析开始之前,需要向XMLReader注册一个ContentHandler,也就是相当于一个事件监听器,在 ContentHandler中定义了很多方法,比如startDocument(),它定制了当在解析过程中,遇到文档开始时应该处理的事情。当 XMLReader读到合适的内容,就会抛出相应的事件,并把这个事件的处理权代理给ContentHandler,调用其相应的方法进行响应。

以下为关联文档:

如何用纸包书?1、选择薄厚适度的纸张; 2、用纸包住书量一下纸张大小,纸的长宽都大于书本的五公分以上为宜; 3、用纸完全将书包住并裹紧,使各部分尺寸均等; 4、裁去书脊两端长于书脊的纸张部分,...

如何用Winform生成一个XML文件static void Main(string[] args) { XmlDocument xmldoc = new XmlDocument(); //声明节 XmlDeclaration dec = xmldoc.CreateXmlDeclaration("1.0", "utf-8", null); xmldoc.Ap...

如何用绳套捕猎绳套是最简单的一种陷阱,几乎所有针对野外的救生宝盒里都应备有布置圈套用的金属线。可选择不锈钢材料的金属线,一端有眼,以便另一端从中穿过。可以紧紧 拴在树桩、岩石或树上...

如何用excel编写这样一个函数可以采用 excel Vba 实现! 步骤如下 在页面上放置两个文本输入框 替换输入文本框的 change 事件代码 Private Sub TextBox1_Change() Dim CharArray As Variant CharArray =...

如何用眼卫生?1.注意用眼卫生2.坚持做眼保健操3.劳逸结合,睡眠充足4.注意营养,加强锻炼,增强体质 5.定期到专业眼镜公司检查视力,发现减退应及时矫正,防止近视加深6.饮食结构合理 研究发现,饮食...

如何用日文打字网球王子的日文拼写是:テニスの王子様 windows有自带的日文输入法。在控制面板的语言选择添加“日文”就可以了。 不过前提是你要会罗马拼音。 网球王子的罗马拼音是:tennis n...

dom4j如何生成解析xml文件import java.io.Reader;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io....

oracle中如何用最简单的方式实现20151231显示成二〇一五年十二月自定义函数create or replace function my_fun(t_date varchar2) return varchar2 is v_year varchar2(100); v_month varchar2(100); v_day varchar2(100); v_year_new var...

菜鸟求教:怎样利用perl解析xml的包任何人都可以在Perl中编写一个XML解析器。毕竟你只是处理具有已知格式的文本。但由于XML::Parser模块是用C编写的,他比任何你可以实现的纯Perl应用要更有效的多。而且既然他...

推荐阅读
图文推荐