对xml文件的简单解析



package com.eprobj.demo;

import java.io.IOException;

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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Xml {

    public static void main(String[] args) {
        //获取节点个数,以及节点属性。
//        demo1();
        //获取节点个数,以及节点属性, 前提是知道属性有且只有一个时候,所使用的方法。
//        demo2();
        ////获取节点个数,以及节点属性,以及子节点信息。
        demo3();
    }

    private static void demo3() {
        DocumentBuilderFactory  dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document =    db.parse("books.xml");
            //通过book标签获取相应的节点
            NodeList bookList = document.getElementsByTagName("book");
            System.out.println("一共有"+bookList.getLength()+"本书!");
            //遍历每一个book节点
            for(int i=0; i<bookList.getLength(); i++){
                Node book = bookList.item(i);
                //获取book节点的所有属性
                NamedNodeMap attrMap = book.getAttributes();
                System.out.println("第"+(i+1)+"本书共有"+attrMap.getLength()+"个属性.");
                //遍历book的属性
                for (int j = 0; j < attrMap.getLength(); j++) {
                    //属性键值对
                    Node attrNode = attrMap.item(j);
                    System.out.println("属性名:"+attrNode.getNodeName());
                    System.out.println("属性值:"+attrNode.getNodeValue());

                    //获取节点下的所有子节点
                    NodeList childList =book.getChildNodes();
                    System.out.println("第"+(i+1)+"本书共有"+childList.getLength()+"子节点!");
                    //遍历节点,获取节点名称
                    for (int k = 0; k < childList.getLength(); k++) {
                        Node childNode = childList.item(k);
                        //如果当前节点是文字节点的话,只显示NodeNmae();
                        if(childNode.getNodeType() == Node.ELEMENT_NODE)
                        System.out.println(childList.item(k).getNodeName());
                    }
                }
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private static void demo2() {
        DocumentBuilderFactory  dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document =    db.parse("books.xml");
            //通过book标签获取相应的节点
            NodeList bookList = document.getElementsByTagName("book");
            System.out.println("一共有"+bookList.getLength()+"本书!");
            //遍历每一个book节点
            //遍历每一个book节点
            for(int i=0; i<bookList.getLength(); i++){
                Node book = bookList.item(i);
                //获取book节点的所有属性
                NamedNodeMap attrMap = book.getAttributes();
                System.out.println("第"+(i+1)+"本书共有"+attrMap.getLength()+"个属性.");
                //遍历book的属性
                for (int j = 0; j < attrMap.getLength(); j++) {
                    //属性键值对
                    Node attrNode = attrMap.item(j);
                    System.out.println("属性名:"+attrNode.getNodeName());
                    System.out.println("属性值:"+attrNode.getNodeValue());
                }
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private static void demo1() {
        DocumentBuilderFactory  dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document document =    db.parse("books.xml");
            //通过book标签获取相应的节点
            NodeList bookList = document.getElementsByTagName("book");
            System.out.println("一共有"+bookList.getLength()+"本书!");

            //遍历每一个book节点
            for(int i=0; i<bookList.getLength(); i++){
                Node book = bookList.item(i);
                //获取book节点的所有属性
                NamedNodeMap attrMap = book.getAttributes();
                System.out.println("第"+(i+1)+"本书共有"+attrMap.getLength()+"个属性.");
                //遍历book的属性
                for (int j = 0; j < attrMap.getLength(); j++) {
                    //属性键值对
                    Node attrNode = attrMap.item(j);
                    System.out.println("属性名:"+attrNode.getNodeName());
                    System.out.println("属性值:"+attrNode.getNodeValue());

                }
            }
        } catch (ParserConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

使用了两种方式。在代码中已经体现出来。
books.xml使用的是相对路径。
<?xml version="1.0"?>
<bookstore>
<book id="1">
<name>格林童话</name>
<author>轨迹<author>
<language>english</language>
<year>2016</year>

</book>

<book id="2">
<name>格林童话</name>
<author>轨迹<author>
<language>english</language>
<price>20</price>
</book>
</bookstore>
 
时间: 2024-10-06 15:06:35

对xml文件的简单解析的相关文章

java代码用dom4j解析xml文件的简单操作

时间: 2016/02/17 目标:为telenor的ALU Femto接口写一个采集xml文件并解析出locationName标签里的值,然后更新到数据库中. 从网上搜了下,有四种常用的解析xml的方式,包括DOM,JAXD,Dom4J,SAX(simple api for xml).我正好有Dom4j的jar包,就选择了Dom4j来解析xml. 前半截对xml的解析测试成功了.后面的数据库的连接,把数据更新到数据库的操作没有测试.对应的xml文件的行数有点多,没法上传,另写一个xml的文档上

Android中pull解析XML文件的简单使用

首先,android中解析XML文件有三种方式,dom,sax,pull 这里先讲pull,稍候会说SAX和DOM pull是一种事件驱动的xml解析方式,不需要解析整个文档,返回的值是数值型,是推荐的解析方式 看代码: XML文件 <?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>孙洋洋</name

C# 读写XML文件最简单方法

C#史上最简单读写xml文件方式,创建控制台应用程序赋值代码,就可以运行,需要改动,请自行调整 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace ConsoleApp1 { class Program { public cons

利用freemarker生成word,word另存为xml文件的标签解析

http://wenku.baidu.com/link?url=YxTZWVP3ssO-e_Br3LIZVq2xOQnqaSz8gLPiRUDN8NIR_wX2-Z25OqwbVn5kXqGiOFYUMBsaMlWcbHld565N5ENMBTrUOp_-rsrsjIMBlgi 1 public class WordUtil { 2 private Configuration configuration=null; 3 4 public WordUtil () { 5 configuration

【Android】XML文件的解析

1.首先我们可以在res包路径下创建一个raw包,然后在raw下创建一个email.xml 文件,并修改其内容如下: 1 <?xml version="1.0" encoding="utf-8"?> 2 <email> 3 <from>[email protected]</from> 4 <to>[email protected]</to> 5 <date>2016/4/5</

解析XML文件的两种方式 SAX和DOM

1.数据解析 解析的基本概念 所谓“解析”:从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 2.XML数据结构 XML:Extensible Markup language(可扩展标记语言),主流数据格式之一,可以用来存储和传输数据. XML数据格式的功能 数据交换 内容管理 用作配置文件 XML数据结构的语法 声明 节点使用一对标签表示:起始和结束标签. 根节点是起始节点,只有一

DOM解析XML文件

除了可以使用SAX解析XML文件,大家也可以使用熟悉的DOM来解析XML文件. DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOMAPI遍历XML树.检索所需的数据.使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单.但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小

XML文件解析【安卓7】——SAX解析

XML文件解析 XML解析:XML技术是Android平台的应用基础,  Android提供了多种解析XML的方式:SAX解析.DOM解析.PULL解析 SAX解析 SAX --Simple  API  forXML  (XML简单的API) --解析速度快.占用内存少 --提供一组简单的API用于解析XML文件 --SAX在解析XML文件前,先指定一个解析事件处理器(Handler),SAX会对XML文档进行简单的顺序扫描,当扫描到[文档(Document)的开始和结束.元素(Element)

DOM方式解析xml文件查看天气

1.步骤: ①创建文档解析器的工厂对象 ②得到文档解析器对象 ③获取输入流对象 ④通过解析器的parse方法解析is对象 转换成Document对象 ⑤返回的是文档的根节点 ⑥判断是否有孩子节点进行获取子节点转换成元素节点得到属性节点 ⑦得到具体的某个属性节点 2.解析元素节点.属性节点.文本节点: 3.界面搭建 界面搭建的相关代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"