iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android应用中使用DOM方式解析XML格式数据的基本方法
  • 587
分享到

Android应用中使用DOM方式解析XML格式数据的基本方法

方法数据解析xmlxml格式XMLdomAndroid 2022-06-06 08:06:31 587人浏览 八月长安
摘要

DOM比SAX更容易掌握,因为她没有涉及回调和复杂的状态管理,然而,DOM的实现常常将所有的XML节点保存在内存中,这样使的处理较大的文档效率低。 XML基本的节点类型 nod

DOM比SAX更容易掌握,因为她没有涉及回调和复杂的状态管理,然而,DOM的实现常常将所有的XML节点保存在内存中,这样使的处理较大的文档效率低。
XML基本的节点类型
node - DOM基本的数据类型
Element - 最主要处理的对象是Element
Attr - 元素的属性
Text - 一个Element 或者Attr的实际内容
Document - 代表整个XML文档,一个Document对象通常也称为一颗DOM树
 
1.在src目录下新建一个Android.xml


<?xml version="1.0" encoding="UTF-8"?> 
<persons> 
  <person id="23"> 
    <name>xiaanming</name> 
    <age>23</age> 
  </person> 
  <person id="20"> 
    <name>liudehua</name> 
    <age>28</age> 
  </person> 
</persons> 

2.新建一个Person对象来存放解析的内容


package com.example.dom_parser; 
public class Person { 
  private int id; 
  private String name; 
  private int age; 
  public Person(){} 
  public Person(int id, String name, int age){ 
    this.id = id; 
    this.name = name; 
    this.age = age; 
  } 
  public int getId() { 
    return id; 
  } 
  public void setId(int id) { 
    this.id = id; 
  } 
  public String getName() { 
    return name; 
  } 
  public void setName(String name) { 
    this.name = name; 
  } 
  public int getAge() { 
    return age; 
  } 
  public void setAge(int age) { 
    this.age = age; 
  } 
  @Override 
  public String toString() { 
    return "id = " + id + ", name = " + name + ", age = " + age; 
  } 
} 

3 新建一个DomPersonService.class,注释我写的清楚,大家自己看


package com.example.dom_parser; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import android.util.Log; 
public class DomPersonService { 
  public static List<Person> readXML() throws Throwable{ 
    //获得android.xml文件的输入流 
    InputStream is = MainActivity.class.getClassLoader().getResourceAsStream("android.xml"); 
    List<Person> persons = new ArrayList<Person>(); 
    //实例化DocumentBuilderFactory和DocumentBuilder,并创建Document 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder builder = factory.newDocumentBuilder(); 
    Document document = builder.parse(is); 
    //返回文档的根(root)元素 
    Element rootElement = document.getDocumentElement(); 
    //获取一个Note(DOM基本的数据类型)集合,这里有两个person Note 
    NodeList nodes = rootElement.getElementsByTagName("person"); 
    //遍历Note集合 
    for(int i=0; i<nodes.getLength(); i++){ 
      //先从第一个person元素开始解析 
      Element personElement = (Element) nodes.item(i); 
      Person person = new Person(); 
      person.setId(Integer.valueOf(personElement.getAttribute("id"))); 
      //获取person下面的name 和 age 的Note集合 
      NodeList chileNodes = personElement.getChildNodes(); 
      for(int y=0; y<chileNodes.getLength(); y++){ 
        Node childNode = chileNodes.item(y); 
        //判断子Note的类型为元素Note 
        if(childNode.getNodeType() == Node.ELEMENT_NODE){ 
          Element childElement = (Element) childNode; 
        if("name".equals(childElement.getNodeName())){ 
          person.setName(childElement.getFirstChild().getNodeValue()); 
        }else if("age".equals(childElement.getNodeName())){ 
          person.setAge(Integer.valueOf(childElement.getFirstChild().getNodeValue())); 
        } 
        } 
      } 
      Log.e("log", person.toString()); 
      persons.add(person); 
    } 
    return persons; 
  } 
} 

关于DOM解析XML,我们要清楚的知道个节点之间的关系,才能更好的操作对象树,值得注意的是在建立Element时,要注意jar包的导入, 要选择org.w3c.dom.Element,而不是其他的包。

PS:DOM解析虽然我们在android中并不推荐使用,但是这并不代表着不可以实现。dom的原理是把xml文件的各种部分都看成是节点,所有的节点因为层级关系最后形成了一颗节点树。而DOM的解析方式便是在内存中生存这棵树,并允许用户进行相关的操作。

这里列出几个dom中经常用到的方法:

Node 接口的常用方法

一个节点可以调用
short getNodeType()
方法返回一个表示节点类型的常量(Node接口规定的常量值),例如,对于Element节点,getNodeType()方法返回的值为:
Node.ELEMENT_NODE
节点可以调用
NodeList  getChildNodes()
返回一个由当前节点的所有子节点组成的NodeList对象。节点调用
Node  getFirstChild()
返回当前节点的第一个子节点。节点调用
Node  getLastChild()
返回当前节点的最后一个子节点。节点可以调用
NodeList  getTextContent()
返回当前节点及所有子孙节点中的文本内容。

还有其他的很多很多方法,我们可以通过api来详细了解。因为这里主要是为了学习android,所以关于dom稍微了解下就可以了。

您可能感兴趣的文章:Android 创建与解析XML(五)——详解Dom4j方式Android开发之DOM解析xml文件的方法Android编程解析XML方法详解(SAX,DOM与PULL)Android创建与解析XML(二)——详解Dom方式Android解析XML的三种方式SAX、Pull、Dom详解Android之解析XML文件三种方式(DOM,PULL,SAX)Android利用SAX对XML进行增删改查操作详解Android利用Dom对XML进行增删改查操作详解


--结束END--

本文标题: Android应用中使用DOM方式解析XML格式数据的基本方法

本文链接: https://www.lsjlt.com/news/25329.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中怎么使用pull方式解析xml格式文件
    这篇文章将为大家详细讲解有关Android中怎么使用pull方式解析xml格式文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体如下:<xml version="...
    99+
    2023-05-30
    android pull xml
  • Android编程使用sax解析xml数据的方法详解
    本文实例讲述了Android编程使用sax解析xml数据的方法。分享给大家供大家参考,具体如下:随着技术的发展,现在的web已经和以前不同了。web已经逐渐像移动的方向倾斜,作为程序员的确应该拓展一下自己的知识层面。学习各方面的知识,今天就...
    99+
    2023-05-30
    android sax xml
  • Android解析JSON格式数据的两种方式(JSONObject和Gson)
    目录Json数据JSONObjectGSON添加依赖实际操作实体类总结Json数据 接下来主要学习在Android中使用两种解析方式:JSONObject和Gson。 JSONObj...
    99+
    2024-04-02
  • MYSQL中解析json格式数据方法示例
    目录1、判断是否是json格式数据2、解析json中的指定字段(可多层嵌套)3、计算json中指定数组的长度4、完整示例总结 1、判断是否是json格式数据 JSON_VALID(requestbody) 注:...
    99+
    2023-08-19
    MySQL json mysql解析json字符串 mysql处理json
  • 使用Python解析JSON数据的基本方
    Python的json模块提供了一种很简单的方式来编码和解码JSON数据。 其中两个主要的函数是 json.dumps() 和 json.loads() , 要比其他序列化函数库如pickle的接口少得多。 下面演示如何将一个...
    99+
    2023-01-31
    数据 Python JSON
  • 达梦数据库(DM8)基本使用方式
    达梦数据库(DM8)基本使用方式 1、麒麟操作系统安装DM81.1规划安装路径和用户1.2挂载DM8的ISO镜像文件1.3安装使用图形化界面安装使用命令行安装 2、创建数据库...
    99+
    2023-09-11
    linux 服务器 数据库
  • TableLayout的基本使用方式
    TableLayout是一个用于显示表格数据的布局容器,它可以让子视图按行和列进行排列。下面是TableLayout的基本使用方式:...
    99+
    2023-09-13
    TableLayout
  • PowerMockito的基本使用方式
    本篇内容主要讲解“PowerMockito的基本使用方式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PowerMockito的基本使用方式”吧!PowerMockito经常会结合Mockito...
    99+
    2023-06-20
  • Spring中xml配置文件的基础使用方式详解
    目录1. xml配置文件的读取1.1 通过类路径读取配置文件1.2 通过文件系统绝对路径读取配置文件1.3使用BeanFactory接口读取配置文件2.带参构造对象的创建(const...
    99+
    2024-04-02
  • C#中如何使用XML和JSON数据格式进行数据存储和传输及解决方法
    C#中如何使用XML和JSON数据格式进行数据存储和传输及解决方法XML和JSON是目前广泛应用于数据交换和存储的两种标准格式。在C#中,我们可以使用内置的库和工具来处理和操作XML和JSON数据。本文将详细介绍如何在C#中使用XML和JS...
    99+
    2023-10-22
    数据解析 XML存储 JSON存储
  • react中braft-editor的基本使用方式
    目录braft-editor的基本使用项目需求使用braft-editor踩坑记,引用 braft-utils有错误遇到的问题解决方式braft-editor的基本使用 项目需求 实...
    99+
    2024-04-02
  • SpringBoot JMX的基本使用方式
    目录SpringBoot JMX的基本使用1. 声明2. 基本demo3. 执行结果springboot自定义jmx对象什么情况我们需要使用JMX?那要怎么做呢?SpringBoot...
    99+
    2024-04-02
  • javascript内嵌式与外链式的基本应用方式
    目录javascript内嵌式与外链式基本应用JavaScript的三种书写方式:行内式、内嵌式、外链式1、行内式2、内嵌式3、外链式javascript内嵌式与外链式基本应用 js...
    99+
    2024-04-02
  • Java连接PostgreSql数据库及基本使用方式
    目录一)准备工作1.下载链接需要的jar包2.下载之后添加到模块里3.创建一个工具类Util二)连接三)查询四)添加五)删除数据六)封装之后的代码总和 封装类使用测试类总结...
    99+
    2023-03-01
    Java连接PostgreSql Java PostgreSql PostgreSql数据库使用
  • node.js中joi模块的基本使用方式
    目录node.js joi模块的使用参数校验:使用joi基础使用常见schema特殊情况demosnode.js joi模块的使用 //引入joi模块 const Joi = req...
    99+
    2024-04-02
  • Android中JSON的4种解析方式使用和对比
    目录1 Android SDK自带的org.json解析2 Gson解析3 Jackson解析4 Fastjson解析1 Android SDK自带的org.json解析 解析原理:...
    99+
    2024-04-02
  • ABAP和XML数据格式互相转换的方法是什么
    这篇文章主要介绍“ABAP和XML数据格式互相转换的方法是什么”,在日常操作中,相信很多人在ABAP和XML数据格式互相转换的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ABAP和XML数据格式互...
    99+
    2023-06-04
  • Golang中XML数据的编码和解码方法及应用
    Golang中XML序列化和反序列化的方法及应用 在Golang中,XML是一种常用的数据格式,用于在不同系统之间传递和存储数据。在处理XML数据时,我们通常需要进行序列化和反序列化的操作,将数据转换成XML...
    99+
    2024-01-29
    方法 Golang 序列化 xml 反序列化
  • php中怎么利用expat方式解析xml文件
    这篇文章将为大家详细讲解有关php中怎么利用expat方式解析xml文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。test.xml:<xml version="...
    99+
    2023-06-04
  • Go语言中的数据格式(json、xml 、msgpack、protobuf)使用总结
    在分布式的系统中,因为涉及到数据的传输,所以一定会进行数据的交换,此时就要定义数据交换的格式,例如二进制、Json、Xml等等。本篇文章就是总结一下常用的几种数据格式。 一、Json...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作