搜索
首页后端开发XML/RSS教程 android dom 解析xml方式

android dom 解析xml方式

Feb 09, 2017 pm 02:10 PM
Androiddom

首先自己创建一个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>

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

1031.gif

下面来分析源代码:

/**  
 * 用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方式的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
XML中的RSS:解码标签,属性和结构XML中的RSS:解码标签,属性和结构Apr 24, 2025 am 12:09 AM

RSS是一种基于XML的格式,用于发布和订阅内容。RSS文件的XML结构包括根元素、元素和多个元素,每个代表一个内容条目。通过XML解析器读取和解析RSS文件,用户可以订阅并获取最新内容。

XML在RSS中的优势:技术深度潜水XML在RSS中的优势:技术深度潜水Apr 23, 2025 am 12:02 AM

XML在RSS中具有结构化数据、可扩展性、跨平台兼容性和解析验证的优势。1)结构化数据确保内容的一致性和可靠性;2)可扩展性允许添加自定义标签以适应内容需求;3)跨平台兼容性使其在不同设备上无缝工作;4)解析和验证工具确保Feed的质量和完整性。

XML中的RSS:揭示内容联合的核心XML中的RSS:揭示内容联合的核心Apr 22, 2025 am 12:08 AM

RSS在XML中的实现方式是通过结构化的XML格式来组织内容。1)RSS使用XML作为数据交换格式,包含频道信息和项目列表等元素。2)生成RSS文件需按规范组织内容,发布到服务器供订阅。3)RSS文件可通过阅读器或插件订阅,实现内容自动更新。

超越基础:高级RSS文档功能超越基础:高级RSS文档功能Apr 21, 2025 am 12:03 AM

RSS的高级功能包括内容命名空间、扩展模块和条件订阅。1)内容命名空间扩展RSS功能,2)扩展模块如DublinCore或iTunes添加元数据,3)条件订阅根据特定条件筛选条目。这些功能通过添加XML元素和属性实现,提升信息获取效率。

XML主链:RSS提要如何结构XML主链:RSS提要如何结构Apr 20, 2025 am 12:02 AM

rssfeedsusexmltoStructureContentUpdates.1)xmlProvidesHierarchicalStructurefordata.2)theelementDefinestHefEed'sIdentityAndContainsElements.3)ElementsRementsRementsRepresSentividividividualContentpieces.4)rsssissisexisextensible,允许custemements.5)5)

RSS和XML:了解Web内容的动态二重奏RSS和XML:了解Web内容的动态二重奏Apr 19, 2025 am 12:03 AM

RSS和XML是用于网络内容管理的工具。RSS用于发布和订阅内容,XML用于存储和传输数据。它们的工作原理包括内容发布、订阅和更新推送。使用示例包括RSS发布博客文章和XML存储书籍信息。

RSS文档:Web联合组织的基础RSS文档:Web联合组织的基础Apr 18, 2025 am 12:04 AM

RSS文档是基于XML的结构化文件,用于发布和订阅频繁更新的内容。它的主要作用包括:1)自动化内容更新,2)内容聚合,3)提高浏览效率。通过RSSfeed,用户可以订阅并及时获取来自不同来源的最新信息。

解码RSS:内容提要的XML结构解码RSS:内容提要的XML结构Apr 17, 2025 am 12:09 AM

RSS的XML结构包括:1.XML声明和RSS版本,2.频道(Channel),3.条目(Item)。这些部分构成了RSS文件的基础,允许用户通过解析XML数据来获取和处理内容信息。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),