Android使用Dom解析xml
发布日期:2021-08-13 18:30:20 浏览次数:1 分类:技术文章

本文共 2073 字,大约阅读时间需要 6 分钟。

一、理论准备

               

二、上代码 

 
Jack
21
 
Dick
23
 
 

 
package cn.bgxt.service;
 
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;
 
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
 
 
import cn.bgxt.domain.Person;
 
public class DomService {
 
public DomService() {
// TODO Auto-generated constructor stub
}
 
public static List
getPersons(InputStream inputStream) throws Exception
{
List
list=new ArrayList
();
//获取工厂对象,以及通过DOM工厂对象获取DOMBuilder对象
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
//解析XML输入流,得到Document对象,表示一个XML文档
Document document=builder.parse(inputStream);
//获得文档中的次以及节点,persons
Element element=document.getDocumentElement();
// 获取Element下一级的person节点集合,以NodeList的形式存放。
NodeList personNodes=element.getElementsByTagName("person");
for(int i=0;i
{
//循环获取索引为i的person节点
Element personElement=(Element) personNodes.item(i);
Person person=new Person();
//通过属性名,获取节点的属性id
person.setId(Integer.parseInt(personElement.getAttribute("id")));
//获取索引i的person节点下的子节点集合
NodeList childNodes=personElement.getChildNodes();
for(int j=0;j
{
//循环遍历每个person下的子节点,如果判断节点类型是ELEMENT_NODE,就可以依据节点名称给予解析
if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE)
{
if("name".equals(childNodes.item(j).getNodeName()))
{
//因为文本也是一个文本节点,
//所以这里读取到name节点的时候,
//通过getFirstChild()可以直接获得name节点的下的第一个节点,就是name节点后的文本节点
//取其value值,就是文本的内容
person.setName(childNodes.item(j).getFirstChild().getNodeValue());
}
else if("age".equals(childNodes.item(j).getNodeName()))
{
person.setAge(Integer.parseInt(childNodes.item(j).getFirstChild().getNodeValue()));
}
}
}
//把解析的person对象加入的list集合中
list.add(person);
}
return list;
}
}

三、遗留问题

解析xml必须事先知道xml的结构么?不知道不行么?

四、参考文献

                   

转载于:https://www.cnblogs.com/hxsyl/p/3651360.html

转载地址:https://blog.csdn.net/weixin_30697239/article/details/98254211 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux远程登陆其他主机并执行命令的若干方式
下一篇:完全背包

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年03月27日 00时32分37秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

java加载指定文件为当前文本,java:如何使用bufferedreader读取特定的行 2019-04-21
java metrics 怎么样,Java metrics 2019-04-21
在vscode中php语言配置,Visual Studio Code C / C++ 语言环境配置 2019-04-21
php怎么翻译数据库中的中文,javascript – 如何将翻译后的文本插入数据库php 2019-04-21
普朗克公式matlab,用MATLAB实现普朗克函数积分的快捷计算.pdf 2019-04-21
swoolec+%3c?php,PHP+Swoole并发编程的魅力 2019-04-21
php 404配置,phpcms如何配置404 2019-04-21
matlab wash矩阵产生,洗衣机净衣效能与衣损程度的关系分析 2019-04-21
php中如何调用sql server,php调用SQL SERVER 2008及以上版本的方法 2019-04-21
python多线程实现kmeans,3种方式实现python多线程并发处理 2019-04-21
matlab 变量不存在,matlab程序运行时提示变量未定义 2019-04-21
php编码函数 base58,1. Base58可逆加密 2019-04-21
oracle 在需要下列之一,Oracle存储过程中PLS-00103:出现符号“/”在需要下列之一时:(... 2019-04-21
oracle10g dblink优化,Oracle10g通过dblink访问数据异常 2019-04-21
linux安装时的iso文件,直接用ISO文件在linux上安装新系统 2019-04-21
linux修改文件权限为所有人都可以访问,Linux 笔记分享八:文件权限的设定 2019-04-21
linux中卸载ambri-servle,Kerberos 命令使用 2019-04-21
linux二进制反编译,Xori:一款来自BlackHat 2018的二进制反汇编和静态分析工具 2021-06-24
linux两台主机添加信任,Linux两台机器间添加信任,实现不用密码问,互传文件... 2021-06-24
linux 自动获取ssl证书,linux生成自验证ssl证书的具体命令和步骤 2021-06-24