欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Web开发技术—XML解析.pptx

    • 资源ID:87191920       资源大小:386.18KB        全文页数:25页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Web开发技术—XML解析.pptx

    XML文档解析的概念DOM解析XML的方法SAX解析XML的方法目标第1页/共25页XML解析:读入一个XML文件,确认这个文件具有正确的格式,然后将其分解成各种元素,使得程序员能够方便的得到这些元素。(注:XML文档的解析是程序员处理XML的前提,是由解析器完成的。很多公司都提供了解析器的实现,如:APACHE,IBM等)DOM:(DocumentObjectModel)文档对象模型,W3C标准,解析器将读入的XML文档转换成树结构,每个元素对应树结构的一个结点,这样程序员操作树结构来操作XML元素。SAX:(TheSimpleAPIforXML):解析器读入XML文档,并根据元素生成相应的事件。XML解析的概念第2页/共25页XML常用的解析技术常用的解析技术DOM:DocumentObjectModel,文档对象模型JDOMSAX例:students.xml,DOMParse.java XML常用的解析技术常用的解析技术第3页/共25页DOM举例-Xml文件:DOM解析第4页/共25页DOM结构DOM解析第5页/共25页DOM的包结构org.w3c.dom.Document:定义分析、创建DOM文档的一系列方法,是操作DOM的基础。org.w3c.dom.Element:提供了获取,修改XML元素名字和属性的方法;org.w3c.dom.Node:提供了处理节点和子节点的方法。org.w3c.dom.NodeList:提供了获得节点个数和当前节点的方法,这样就可以迭代的访问各个节点。第6页/共25页常用DOM方法Document.getDocumentElement():返回 DOM 树的根。(该函数是 Document 接口的一个方法,没有定义其他的 Node 子类型。)Node.getFirstChild()和 Node.getLastChild():返回给定 Node 的第一个和最后一个孩子。Node.getNextSibling()和 Node.getPreviousSibling():返回给定 Node 的下一个和上一个兄弟。Element.getAttribute(String attrName):对于给定的 Element,返回名为 attrName 的属性的值。如果需要 id 属性的值,可以使用 Element.getAttribute(id)。如果该属性不存在,该方法返回一个空字符串()。DOM解析第7页/共25页DocumentBuilderFactory.newDocumentBuilder().parse()/解析一个外部的XML文件,得到一个Document对象的DOM树DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()/初始化一棵DOM树Document.getDocumentElement().appendChild()/为一个标签结点添加一个子结点Document.createTextNode()/生成一个字符串结点Node.getChildNodes()/取得某个结点的所有下一层子结点Node.removeChild()/删除某个结点的子结点Document.getElementsByTagName()/查找所有指定名称的标签结点Document.getElementById()/查找指定名称的一个标签结点,如果有多个符合,则返回某一个,通常是第一个Element.getAttribute()/取得一个标签的某个属性的的值Element.setAttribute()/设置一个标签的某个属性的的值Element.removeAttribute()/删除一个标签的某个属性TransformerFactory.newInstance().newTransformer().transform()/将一棵DOM树写入到外部XML文件第8页/共25页DOM解析关键代码DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();Stringpath=d:/internet应用解决方案/材料/demo.xml;FilexmlFile=newFile(path);DocumentBuilderbuiler=factory.newDocumentBuilder();/创建一个解析器对象 doc=builer.parse(newFile(path);/使解析器指向您的 XML 文档 DOM解析第9页/共25页SAX解析SAXvsDOM:DOM在内存中建立XML文档树。如果文档非常大,DOM树可能需要很大的内存。DOM树包括许多对象表示XML源文档的内容。如果只需要文档中的少量信息,创建所有这些对象是一种浪费。DOM解析器必须在代码访问之前建立整个DOM树。如果解析非常大的XML文档,在等待解析器完成之前会有明显的延迟。第10页/共25页SAX解析SAX解析XML的基本步骤:首先获得一个实现了SAX接口的解析器写一个符合SAX标准的处理器类,并且把这个类注册到刚做好的解析器解析器会把XML文件作为一个流读出来,然后再把文件流转换成一个事件流,这个事件流中的内容包括“文档开始”、“文档结束”、“元素开始”、“元素结束”根据事件调用注册到解析器里的处理器里面的相应的方法,在解析器进行XML文件解析的同时,应用程序可以调用解析器提供的方法,对解析器的行为进行控制或获取解析器的状态。第11页/共25页SAX解析第12页/共25页SAX解析SAXAPISAXParserFactory:SAXParserFactory对象用来按照系统属性中的定义创建一个分析器的实例。Parser:org.xml.sax.Parser接口定义了类似setDocumentHandler的方法来创建事件处理函数。另外,该接口中还定义parser(URI)方法来对XML文档进行实际的分析工作。ContentHandler:当分析器遇到XML文档中的标记时,就会激活该接口中的startDocument,endDocument,startElement以及endElement等方法。另外,characters方法以及processingIstruction方法也是在ContentHandler接口中实现的。当分析器遇到元素内部的文本内容时就会激活characters方法,当分析器遇到处理指令时就会激活processingIstruction方法。ErrorHandler:当分析器在分析过程中遇到不同的错误时,ErrorHandler接口中的error,fatalError或者warning方法就会被激活。DTDHandler:当处理DTD中的定义时,就会调用该接口的方法。EntityResolver:当分析器要识别由URI定义的数据时,就会调用该接口中的resolveEntity方法。第13页/共25页每个结点有三个属性:以上方法来自于org.w3c.dom.Node另外,只有解析器开启名字空间支持(),则调用getLocalName()和getNamespaceURI()得到本地名和URI才不会为NULLSAX解析第14页/共25页SAX解析SAX编程实例:/需要引入下面的包importorg.xml.sax.helpers.DefaultHandler;importjavax.xml.parsers.*;importorg.xml.sax.*;importorg.xml.sax.helpers.*;importjava.util.*;importjava.io.*;第15页/共25页SAX解析public class SAXCounter extends DefaultHandler private Hashtable tags;/这个Hashtable用来记录tag出现的次数/处理文档前的工作public void startDocument()throws SAXException tags=new Hashtable();/初始化Hashtable/对每一个开始元属进行处理public void startElement(String namespaceURI,String localName,String qName,Attributes atts)throws SAXException String key=rawName;Object value=tags.get(key);System.out.println(tag名称:+key);if(value=null)/如果是新碰到的标签,这在Hastable中添加一条记录tags.put(key,new Integer(1);else/如果以前碰到过,得到其计数值,并加1int count=(Integer)value).intValue();count+;tags.put(key,new Integer(count);第16页/共25页SAX解析/解析完成后的统计工作publicvoidendDocument()throwsSAXExceptionEnumeratione=tags.keys();while(e.hasMoreElements()Stringtag=(String)e.nextElement();intcount=(Integer)tags.get(tag).intValue();System.out.println(Tagoccurs+count+times);第17页/共25页SAX解析/程序入口,用来完成解析工作staticpublicvoidmain(Stringargs)Stringfilename=src/soap1.xml;SAXParserFactoryspf=SAXParserFactory.newInstance();SAXParsersaxParser=null;try/创建一个解析器SAXParser对象saxParser=spf.newSAXParser();/得到SAXParser中封装的SAXXMLReadercatch(Exceptionex)System.err.println(ex);System.exit(1);try/使用指定的ContentHandler,解析给XML文件,saxParser.parse(filename,newSAXCounter();System.out.println(ok);catch(SAXExceptionse)System.err.println(se.getMessage();System.exit(1);catch(IOExceptionioe)System.out.println(ioe);System.exit(1);第18页/共25页JDOMJDOM针对文档对象模型的复杂性,人们提出了另外一种解决方案,即JDOM。它由BrettMcLaughlin和Jason所创建,使用80-20法则为最常用的80%的XML处理功能提供一种简单的API。JDOM并没有尝试替代DOM,目前还只能用于Java语言。第19页/共25页JDOM特点:JDOM是Java平台专用的没有层次性第20页/共25页JDOMJDOM编程创建一个Document:ElementcarElement=newElement(car);DocumentmyDocument=newDocument(carElement);添加一个AttributecarElement.addAttribute(newAttribute(vin,123fhg5869705iop90);元素和子元素Elementmake=newElement(make);make.addContent(Toyota);carElement.addContent(make);用简洁形式添加元素carElement.addContent(newElement(make).addContent(Toyota);第21页/共25页JDOM添加其余的元素carElement.addContent(newElement(model).addContent(Celica);carElement.addContent(newElement(year).addContent(1997);carElement.addContent(newElement(color).addContent(green);carElement.addContent(newElement(license).addContent(1ABC234).addAttribute(state,CA);添加一条注释carElement.addContent(newComment(Descriptionofacar);访问子元素ElementyearElement=carElement.getChild(year);除去子元素booleanremoved=carElement.removeChild(year);第22页/共25页JDOM将JDOM转化为XML文本tryXMLOutputteroutputter=newXMLOutputter(,true);outputter.output(myDocument,System.out);catch(java.io.IOExceptione)e.printStackTrace();使用FileWriter输出XMLFileWriterwriter=newFileWriter(/some/directory/myFile.xml);outputter.output(myDocument,writer);writer.close();第23页/共25页总结 DOM及DOM 解析的原理 DOM的接口和常用APISAX及SAX解析的原理SAX的接口和常用APIJDOM编程简单介绍了DOM4j第24页/共25页谢谢您的观看!第25页/共25页

    注意事项

    本文(Web开发技术—XML解析.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开