温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

android dom如何解析xml

发布时间:2021-01-27 09:34:16 来源:亿速云 阅读:199 作者:小新 栏目:编程语言

这篇文章主要介绍了 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>

解析出来的结果显示如下图:

android dom如何解析xml

下面来分析源代码:

/**    * 用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”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI