android xml dom解析,android 中 DOM解析xml

DOM方式解析文档,我们将解析后得到的数据显示在一个TextView中,代码示例:

public class ActivityMain extends Activity {

@Override

public voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

TextViewresult = (TextView)this.findViewById(R.id.resultText);

//读取xml文件

ListuserList = readXMLDOM();

//显示

StringBufferstrB = new StringBuffer();

for(Useru:userList){

strB.append(u.userId+","+u.userName+","+u.userAge+"\n");

}

result.setText(strB);

}

/**

* 解析文档

* @return

*/

privateList readXMLDOM() {

InputStreamis = null;

ListuserList = new ArrayList();

//获取一个解析DOM树的工厂

DocumentBuilderFactoryfactory = DocumentBuilderFactory.newInstance();

try {

//读取raw目录的xml文件

is= getResources().openRawResource(R.raw.dom);

//创建DOM文档对象

DocumentBuilderbuilder = factory.newDocumentBuilder();

//加载XML文档,将XML文件解析为Document

Documentdom = builder.parse(is);

//获取DOM文档的根元素

Elementroot = dom.getDocumentElement();

//查找所有user节点列表

NodeListitems = root.getElementsByTagName("user");

for(int i = 0; i < items.getLength(); i++) {

Useruser = new User();

//获取user节点

Elementnode = (Element) items.item(i);

//获取user节点的id属性值

user.userId= node.getAttribute("id");

//获取user节点下的所有子节点

NodeListchildsNodes = node.getChildNodes();

for(int j = 0; j < childsNodes.getLength(); j++) {

Node nodeChild = (Node)childsNodes.item(j);

//判断是否为元素类型

if(nodeChild.getNodeType() == Node.ELEMENT_NODE) {

ElementchildNode = (Element) nodeChild;

// 判断是否name元素

if("name".equals(childNode.getNodeName())) {

//获取name元素的内容

user.userName= childNode.getFirstChild().getNodeValue();

}else if ("age".equals(childNode.getNodeName())) {

user.userAge= childNode.getFirstChild().getNodeValue();

}

}

}

userList.add(user);

}

} catch(Exception e) {

e.printStackTrace();

}finally{

if(is!=null){

try{

//关闭输入流

is.close();

}catch (IOException e) {

e.printStackTrace();

}

}

}

returnuserList;

}

}

从上面代码中我们分析下DOM解析XML步骤:

(1)读取xml文件获取输入流对象;

(2)创建DocumentBuilderFactory 实例,得到解析器的工厂类;

(3)通过DocumentBuilderFactory 创建DocumentBuilder文档解析器;

(4)parse(InputStreamis) 方法将文档内容装入解析器;

(5)然后获取文档的根结点(Element);

(6)然后从根结点中获取我们关注的所有子节点的列表(NodeList);

(7)最后根据节点名称获取我们需要的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值