浅谈Android工作室解析XML的三种方法

  

  

文件解析要求,json解析和xml解析,前面文章说过json转实体类,这里就说说解析xml

  

内容:   

Android工作室解析XML常见的三种方式:DOM将SAX(实现XML转实体类并打印输出)

  

效果演示:

  

浅谈Android工作室解析XML的三种方法”> <br/>
  </p>
  <p> </p>
  <p> SAX (XML)的简单API使用流式处理的方式,它并不记录所读内容的相关信息。它是一种以事件为驱动的XML API,解析速度快,占用内存少。使用回调函数来实现。缺点是不能倒退。</p>
  <p> DOM(文档对象模型)是一种用于XML文档的对象模型,可用于直接访问XML文档的各个部分。它是一次性全部将内容加载在内存中,生成一个树状结构,它没有涉及回调和复杂的状态管理。缺点是加载大文档时效率低下。</p>
  <p>拉内置于Android系统中。也是官方解析布局文件所使用的方式.Pull与SAX有点类似,都提供了类似的事件,如开始元素和结束元素。不同的是,SAX的事件驱动是回调相应方法,需要提供回调的方法,而后在SAX内部自动调用相应的方法。而把解析器并没有强制要求提供触发的方法,因为他触发的事件不是一个方法,而是一个数字。它使用方便,效率高。</p>
  <p> <强> SAX、DOM的拉比较:,</强> <br/>
  </p>
  <p> 1。内存占用:SAX比DOM要拉好,,<br/>
  2. 编程方式:SAX采用事件驱动,在相应事件触发的时候,会调用用户编好的方法,也即每解析一类XML,就要编写一个新的适合该类XML的处理类.DOM是W3C的规范,拉简洁只<br/>
  3.访问与修改:SAX采用流式解析,DOM随机访问只<br/>
  4. 访问方式:SAX,拉解析的方式是同步的,DOM逐字逐句</p>
  <p>这里不做详细讲解,看注释,上代码</p>
  <p>看项目文件,注意XML放的位置,不会建资产参考https://www.jb51.net/article/144766.htm </p>
  <p> <img src=   & lt; & # 63; xml version=" 1.0 " encoding=" utf - 8 " & # 63;比;   & lt; persons>   & lt;人id=?3”比;   & lt; name>李雷& lt;/name>   & lt; age> 30 & lt;/age>   & lt;/person>   & lt;人id=" 20 "比;   & lt; name>韩梅梅& lt;/name>   & lt; age> 25 & lt;/age>   & lt;/person>   & lt;/persons>      位于

        公共类人{   整数id;   字符串名称;   短的年龄;      公共整数getId () {   返回id;   }      公共空间setId(整数id) {   这一点。id=id;   }      公共字符串getName () {   返回名称;   }      公共空间setName(字符串名称){   this.name=名称;   }      公共短getAge () {   返回年龄;   }      公共空间setAge(短年龄){   这一点。年龄=年龄;   }      @Override   公共字符串toString () {   返回“{”+   " id=" + + id   “name=" +名字+ \”   ”,年龄=" +年龄+   '} ';   }   }      

XMLtoEntityActivity
  

        公开课XMLtoEntityActivity延伸AppCompatActivity {   私人TextView tv_show_entity;   私人弦弦=" ";   @Override   保护空白>/* *   *采用DOM解析XML内容   */公开课DOMService {   公共List{getperson (InputStream InputStream)抛出异常      List人=new ArrayList<在();//获取DOM解析器工厂   DocumentBuilderFactory工厂=DocumentBuilderFactory.newInstance ();//获DOM解析器   DocumentBuilder builder=factory.newDocumentBuilder ();//将解析树放入内存,通过返回值文档来描述结果   文档文件=builder.parse (inputStream);//取得根元素& lt; personos>   根元素=document.getDocumentElement ();//取得所有人节点集合   节点列表personNodes=root.getElementsByTagName(“人”);   for (int i=0;我& lt;personNodes.getLength ();我+ +){   人的人=new ();//取得的人节点元素   元素personElement=(元素)personNodes.item(我);//取得属性值并设置ID   person.setId (Integer.parseInt (personElement.getAttribute (" id ")));//获取人的子节点   节点列表personChilds=personElement.getChildNodes ();   for (int j=0;j & lt;personChilds.getLength ();j + +) {//判断当前节点是否是元素类型的节点   如果(personChilds.item (j) .getNodeType ()==Node.ELEMENT_NODE) {   元素childElement=(元素)personChilds.item (j);   如果(“名字”.equals (childElement.getNodeName ())) {//获取孙节点的值   .getNodeValue person.setName (childElement.getFirstChild () ());   }else if(“年龄”.equals (childElement.getNodeName ())) {   .getNodeValue person.setAge (Short.parseShort (childElement.getFirstChild () ()));   }   }   }   persons.add(人);   }   返回的人;   }   }

浅谈Android工作室解析XML的三种方法