android解析xml文件方法之一-----DOM
Hello.xml文件
<dict num="219" id="219" name="219"> <key>hello</key> <ps>hə'ləʊ</ps> <pron> http://res-tts.iciba.com/5/d/4/5d41402abc4b2a76b9719d911017c592.mp3 </pron> <ps>həˈloʊ</ps> <pron> http://res.iciba.com/resource/amp3/1/0/5d/41/5d41402abc4b2a76b9719d911017c592.mp3 </pron> <pos>int.</pos> <acceptation>哈喽,喂;你好,您好;表示问候;打招呼;</acceptation> <pos>n.</pos> <acceptation>“喂”的招呼声或问候声;</acceptation> <pos>vi.</pos> <acceptation>喊“喂”;</acceptation> <sent> <orig> This document contains Hello application components of each document summary of the contents. </orig> <trans>此文件包含组成Hello应用程序的每个文件的内容摘要.</trans> </sent> <sent> <orig> In the following example, CL produces a combined source and machine - code listing called HELLO. COD. </orig> <trans>在下面的例子中, CL将产生一个命名为HELLO. COD的源代码与机器代码组合的清单文件.</trans> </sent> <sent> <orig>Hello! Hello! Hello! Hello! Hel - lo!</orig> <trans>你好! 你好! 你好! 你好! 你好!</trans> </sent> <sent> <orig>Hello! Hello! Hello! Hello ! I'm glad to meet you.</orig> <trans>你好! 你好! 你好! 你好! 见到你很高兴.</trans> </sent> <sent> <orig>Hello Marie. Hello Berlioz. Hello Toulouse.</orig> <trans>你好玛丽, 你好柏里欧, 你好图鲁兹.</trans> </sent> </dict>
Hello实体
package com.analysisxml.ych.analysisxml.entity;
import java.util.List;
public class Hello {
private String key;
private List<String> ps;
private List<String> pron;
private List<String> pos;
private List<String> acceptation;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public List<String> getPs() {
return ps;
}
public void setPs(List<String> ps) {
this.ps = ps;
}
public List<String> getPron() {
return pron;
}
public void setPron(List<String> pron) {
this.pron = pron;
}
public List<String> getPos() {
return pos;
}
public void setPos(List<String> pos) {
this.pos = pos;
}
public List<String> getAcceptation() {
return acceptation;
}
public void setAcceptation(List<String> acceptation) {
this.acceptation = acceptation;
}
public String toString(){
return "Hello{"+"key="+key+'\''
+",ps="+ps+'\''
+",pron="+pron+'\''
+",pos="+pos+'\''
+"acceptation="+acceptation+'\''+
"}";
}
}
DOM解析类
package com.analysisxml.ych.analysisxml.utils;
import android.util.Log;
import com.analysisxml.ych.analysisxml.entity.Hello;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
public class Dom {
public Hello domToxml(InputStream is) throws ParserConfigurationException, IOException, SAXException {
//初始化
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//获得Document对象
Document document = builder.parse(is);
//获得Hello的list
NodeList helloList = document.getElementsByTagName("dict");
//遍历Hello标签
NodeList nodeList = helloList.item(0).getChildNodes();
Hello hello = new Hello();
List<String> psList = new ArrayList<>();
List<String> pronList = new ArrayList<>();
List<String> posList = new ArrayList<>();
List<String> acceptationList = new ArrayList<>();
for (int i = 0; i < nodeList.getLength(); i++) {
if ("key".equals(nodeList.item(i).getNodeName())) {
hello.setKey(nodeList.item(i).getTextContent());
}
if ("ps".equals(nodeList.item(i).getNodeName())) {
psList.add(nodeList.item(i).getTextContent());
}
if ("pron".equals(nodeList.item(i).getNodeName())) {
pronList.add(nodeList.item(i).getTextContent());
}
if ("pos".equals(nodeList.item(i).getNodeName())) {
posList.add(nodeList.item(i).getTextContent());
}
if ("acceptation".equals(nodeList.item(i).getNodeName())) {
acceptationList.add(nodeList.item(i).getTextContent());
}
Log.e("tag", nodeList.item(i).getTextContent());
}
hello.setPs(psList);
hello.setPron(pronList);
hello.setPos(posList);
hello.setAcceptation(acceptationList);
return hello;
}
}
入口 :
try {
Hello hello=new Dom().domToxml(getResources().getAssets().open("Hello.xml"));
Log.e("tag1",hello.toString());
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
将xml文件放在如下位置:
\
解析结果:
Hello{key=hello',ps=[hə'ləʊ, həˈloʊ]',pron=[
http://res-tts.iciba.com/5/d/4/5d41402abc4b2a76b9719d911017c592.mp3
,
http://res.iciba.com/resource/amp3/1/0/5d/41/5d41402abc4b2a76b9719d911017c592.mp3
]',pos=[int., n., vi.]'acceptation=[哈喽,喂;你好,您好;表示问候;打招呼;, “喂”的招呼声或问候声;, 喊“喂”;]'}
初学解析xml,如有不对的地方请见谅和指正。
android解析xml文件方法之一-----DOM的更多相关文章
- android解析xml文件的方式
android解析xml文件的方式 作者:东子哥 ,发布于2012-11-26,来源:博客园 在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xm ...
- Android 解析XML文件和生成XML文件
解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...
- Java是如何解析xml文件的(DOM)
Java解析xml文件 在Java程序中读取xml文件的过程也称为"解析xml文件": 解析的目的: 获取 节点名和节点值 获取 属性名.属性值. 四中解析方式: DOM SAX ...
- Android解析XML文件
XML文件和获取XML值 XML文件样例 <?xml version="1.0" encoding="utf-8"?> <citys> ...
- Android解析xml文件-采用DOM,PULL,SAX三种方法解析
解析如下xml文件 <?xml version="1.0" encoding="UTF-8"?> <persons> <perso ...
- [android]解析XML文件的方法有三种:PULL,DOM,SAM
PULL 的工作原理: XML pull提供了开始元素和结束元素.当某个元素开始时,可以调用parser.nextText从XML文档中提取所有字符数据.当解析到一个文档结束时,自动生成EndDocu ...
- 解析XML文件之使用DOM解析器
在前面的文章中.介绍了使用SAX解析器对XML文件进行解析.SAX解析器的长处就是占用内存小.这篇文章主要介绍使用DOM解析器对XML文件进行解析. DOM解析器的长处可能是理解起来比較的直观,当然, ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- Java中使用DOM4J来生成xml文件和解析xml文件
一.前言 现在有不少需求,是需要我们解析xml文件中的数据,然后导入到数据库中,当然解析xml文件也有好多种方法,小编觉得还是DOM4J用的最多最广泛也最好理解的吧.小编也是最近需求里遇到了,就来整理 ...
随机推荐
- TSVN客户端复制文件
TSVN客户端复制文件 代码重构中,可能需要将一个大文件拆分成2个小文件,同时要保证拆分后的小文件继承原来的SVN历史记录. TSVN客户端只有Rename功能,没有Copy功能. 可进入Browse ...
- FFmpeg获取DirectShow设备数据(摄像头,录屏)
这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1. 列设备 ffmpeg -list_devic ...
- www-authenticate与BASE-64认证技术
www-authenticate是一种简单的用户身份认证技术.很多验证都采用这种验证方式,尤其在嵌入式领域中.优点:方便缺点:这种认证方式在传输过程中采用的用户名密码加密方式为BASE-64,其解码过 ...
- Google的两种广告推广方式
1搜索关键字广告推送:AdWords: 覆盖广泛:在全球最大的搜索和网络平台上进行推广. 定位精准:锁定目标客户群体,让潜在客户轻松找上门. 成本可控:仅当用户点击广告时,您才支付费用. 2.网站内容 ...
- R12中注册客户化应用为多组织应用
Oralce EBS R12中引入了MOAC的控制,所有多OU的表对象都添加了数据库VPD的控制策略,需要访问这些对象中的数据,首先需要进行多组织环境的初始化,但是如果客户化的应用中也需要具备多OU的 ...
- 识别你的ADFS是什么版本的(Which version of ADFS is running)
各版本的ADFS版本识别见如下链接: http://jorgequestforknowledge.wordpress.com/2014/02/23/gathering-architectural-de ...
- Leetcode_111_Minimum Depth of Binary Tree
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41964249 Minimum Depth of Binar ...
- Stochastic Gradient Descent 随机梯度下降法-R实现
随机梯度下降法 [转载时请注明来源]:http://www.cnblogs.com/runner-ljt/ Ljt 作为一个初学者,水平有限,欢迎交流指正. 批量梯度下降法在权值更新前对所有样本汇总 ...
- struts2 easyui实现datagrid的crud
最近两天因为项目需要,接触了easyui,要用它的datagrid实现crud.第一次做,花了一天时间才完成所有功能,昨天做另外一个模块,同样的功能只用了两个小时. 现在把第一次做datagrid时遇 ...
- 关于App启动加载广告页面思路
需求 很多app(如淘宝.美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页.虽然说这个广告页面对用户 ...