您好,欢迎访问一九零五行业门户网

android dom 解析xml方式

首先自己创建一个xml文件:domtest.xml
<?xml version="1.0" encoding="utf-8"?> <classes> <group name="一年级" num="10"> <person name="小明" age="7"> <chinese> 语文80 </chinese> <english> 英语89 </english> </person> <person name="小强" age="8"> <chinese> 语文90 </chinese> <english> 英语99 </english> </person> </group> <group name="二年级" num="20"> <person name="小文" age="8"> <chinese> 语文85 </chinese> <english> 英语95 </english> </person> <person name="小中" age="9"> <chinese> 语文80 </chinese> <english> 英语90 </english> </person> </group> </classes>
解析出来的结果显示如下图:
下面来分析源代码:
/** * 用dom方式 解析xml 文件 * @param filename */ private string domxmlparse(string filename) { string str=""; // xml文档创建工厂 documentbuilderfactory docfactory = documentbuilderfactory .newinstance(); // xml文档创建实例 documentbuilder docbuilder; // xml文档 document doc = null; inputstream instream = null; try { docbuilder = docfactory.newdocumentbuilder(); // 从assets文件夹下获取文件 转换成输入流 instream = this.getresources().getassets().open(filename); doc = docbuilder.parse(instream); // 获取xml跟元素 element rootele = doc.getdocumentelement(); // 二级父元素的list列表 nodelist groupnode = rootele.getelementsbytagname("group"); // nodelist childnode = rootele.getelementsbytagname("person"); // 遍历classe下所有的group for (int i = 0; i < groupnode.getlength(); i++) { element groupele = (element) groupnode.item(i); string groupname = groupele.getattribute("name"); string num = groupele.getattribute("num"); str =str+"name ="+groupname+" num = "+num+"\n"; log.e("xml", "name = " + groupname + " num = " + num); // nodelist personnode = groupnode.item(i).getchildnodes(); nodelist personnode = groupele.getelementsbytagname("person"); // 遍历group下的所有person for (int j = 0; j < personnode.getlength(); j++) { element personele = (element) personnode.item(j); string name = personele.getattribute("name"); string age = personele.getattribute("age"); str =str+"personname ="+name+" personage = "+age+"\n"; log.e("xml", "name = " + name + " age = " + age); element chineseele = (element) personele .getelementsbytagname("chinese").item(0); element englistele = (element) personele .getelementsbytagname("english").item(0); string chinese = chineseele.getfirstchild().getnodevalue(); string english = englistele.getfirstchild().getnodevalue(); str =str+"chinese = "+chinese+" english = "+english+"\n"; log.e("xml", "chinese = " + chinese + " english = " + english); } } } catch (parserconfigurationexception e1) { e1.printstacktrace(); } catch (ioexception e) { e.printstacktrace(); } catch (saxexception e) { e.printstacktrace(); } return str; }
为 xml 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 dom 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、cpu)。
以上就是android dom 解析xml方式 的内容。
其它类似信息

推荐信息