使用DOM解析器解析XML文件 学习笔记

  • dom解析和dom4j原理一致
  • Node是所有元素的父接口
  • 常用的API:
    • DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();取得DOM解析器工厂
    • DocumentBuilder domParser = factory.newDocumentBuilder();取得DOM解析器
    • domParser.parse(*.xml)加载需要解析的XML文件
    • Document.getDocumentElement()取得XML文件的根元素/节点
    • Element.getNodeName():取得根元素
    • Element.getElementsByTagName("汽车")取得"汽车"元素的集合
    • NodeList.item(i)取得第N个元素,从0开始
    • Element.getTextContent():取得元素的文本内容
    • Element.getAttributes().getNamedItem("出产时间").getTextContent():取得元素中某属性的值
    • document.createElement("汽车");创建新元素
    • Element.setTextContent("我的汽车");设置元素的内容
    • Element.appendChild(newCarElement);在尾部添加元素
    • Element.insertBefore(newCarElement,
    • rootElement.getElementsByTagName("汽车").item(1));在指定的元素前添加元素
    • TransformerFactory tf = TransformerFactory.newInstance();创建输出工厂
    • Transformer transformer = tf.newTransformer();创建输出对象
    • Source source = new DOMSource(document);创建内存的document对象
    • Result result = new StreamResult(new File("src/cn/itcast/xml/dom/car.xml"));指定输出的目标地点
    • transformer.transform(source,result);将document对象输出到xml文件中
    • Element.setTextContent("深圳");更新元素的内容
    • Element.removeChild(secondCarElement);在父元素基础上删除直接子元素
  • dom解析器会将空白字符当作有效元素对待
  • 要让dom解析器将空白字符忽略,必须满足二条件
    a)对XML文件必须写一个DTD约束
    b)factory.setIgnoringElementContentWhitespace(true);
  • dom类解析器和sax类解析器
    a)dom是一次性加载到内容,形成document对象,人工导航,适合curd
    b)sax是分次性加载到内容,sax解析器导航,但程序员需要编写sax处理器,必须扩展DefaultHandler类,适合r
  • car.xml

    <车辆清单>
        <汽车>
            <车牌 出产时间="2010年">奥迪</车牌>
            <产地>北京</产地>
            <单价>30</单价>
        </汽车>
        <汽车>
            <车牌 出产时间="2012年">本田</车牌>
            <产地>深圳</产地>
            <单价>60</单价>
        </汽车>
    </车辆清单>
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    
    //使用DOM解析器解析XML文件
    public class Demo1 {
        public static void main(String[] args) throws Exception {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder domParser = factory.newDocumentBuilder();
            Document document = domParser.parse(new File("src/cn/itcast/xml/dom/car.xml"));
            Element rootElement  = document.getDocumentElement();
            System.out.println("根元素为:"+rootElement.getNodeName());
            NodeList nodeList = rootElement.getElementsByTagName("汽车");
            System.out.println("共有:" + nodeList.getLength()+"辆汽车");
            System.out.println("++++++++++++++++++++++++++");
            for(int i=0;i<nodeList.getLength();i++){
                Element element = (Element) nodeList.item(i);
                String band = element.getElementsByTagName("车牌").item(0).getTextContent();
                String place = element.getElementsByTagName("产地").item(0).getTextContent();
                String price = element.getElementsByTagName("单价").item(0).getTextContent();
                String time = element.getElementsByTagName("车牌").item(0).getAttributes().getNamedItem("出产时间").getTextContent();     
    
                System.out.println("车牌:" + band);
                System.out.println("产地:" + place);
                System.out.println("单价:" + price);
                System.out.println("出产时间:" + time);
                System.out.println("-------------------------");
            }
        }
    }
    

    结果:
    根元素为:车辆清单
    共有:2辆汽车
    ++++++++++++++++++++++++++
    车牌:奥迪
    产地:北京
    单价:30
    出产时间:2010年

    车牌:本田
    产地:深圳
    单价:60
    出产时间:2012年

    原文地址:http://blog.51cto.com/357712148/2104153

    时间: 2024-10-06 06:26:07

    使用DOM解析器解析XML文件 学习笔记的相关文章

    使用Pull解析器生成XML文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器. 1.使用Pull解析器生成一个与itcast.xml文件内容相同的myitcast.xml文件,代码在下方 public static String writeXML(List<Person> persons, Writer wri

    使用Pull解析器生成XML文件和读取xml文件

    有些时候,我们需要生成一个XML文件,生成XML文件的方法有很多,如:可以只使用一个StringBuilder组拼XML内容,然后把内容写入到文件中:或者使用DOM API生成XML文件,或者也可以使用pull解析器生成XML文件,这里推荐大家使用Pull解析器. 一.布局界面 [html] view plaincopyprint? <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap

    Android下使用pull解析器生成XML文件、读取XML文件

    Android下使用Pull解析器 1,Pull解析器的运行方式与SAX解析器相似.它提供了类似的事件,如:开始元素和结束元素事件. 2,使用parser.next()可以进入下一个元素并触发相应事件. 3,事件将作为一个int数值被发送,因此可以使用一个switch对相应的事件进行处理. 4,当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值. 5,相关API: 获得当前节点事件类型:parser.getEventType(); 获得下一节点事件类型

    PHP操作XML文件学习笔记

    原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作方式很多,这次学习的是通过DOMDocument进行操作,其他的操作方法可以参考 http://www.oschina.net/code/snippet_110138_4727 1.对XML文件的遍历 通过DOMDocument对于XML文件的操作的方法:首先要实例化一个DOMDocument类的对

    使用XML序列化器生成XML文件和利用pull解析XML文件

    首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message> <sms> <body> 陈驰0 </body> <date> 1462162910995 </date> <address> 1380 </address> <type> 1 </type> &

    【Java编程】SAX XML Parser解析、生成XML文件

    1.优缺点 优点: SAX 从根本上解决了 DOM 在解析 XML 文档时产生的占用大量资源的问题.其实现是通过类似于流解析的技术,通读整个 XML 文档树,通过事件处理器来响应程序员对于 XML 数据解析的需求.由于其不需要将整个 XML 文档读入内存当中,它对系统资源的节省是十分显而易见的,它在一些需要处理大型 XML 文档以及性能要求较高的场合有起了十分重要的作用.支持 XPath 查询的 SAX 使得开发人员更加灵活,处理起 XML 来更加的得心应手. 缺点: 但是同时,其仍然有一些不足

    Android开发系列(八):采用Pull解析器解析和生成XML内容

    因为有些时候,应用的数据是采用XML文件的格式存放的,所以我们需要知道怎么从XML文件中读取这些数据 在Android中可以通过SAX.DOM.pull解析XML文件. 在本篇博文中主要介绍采用Pull解析器解析和生成XML内容. 介绍:在Android已经集成了Pull解析器,所以无需添加任何的jar文件.在Android中本身用到的各种xml文件,其内部也是采用Pull解析器进行解析的. 一.采用Pull解析器解析XML文件内容 首先,我们需要先建立一个Android Project项目,名

    Android中解析与创建XML文件

    Android中解析与创建XML文件 在Android中对XML的操作有多种方式,常见的有三种方式:SAX.DOM和PULL方式. DOM方式会把整个XML文件加载到内存中,在PC上常使用DOM的方式. 但是在性能敏感的设备上,主要采用的是SAX的方式,但是缺点是嵌套多个分支的时候处理不是很方便. 而PULL的方式类似SAX方式,同样很节省内存. 因此,本文章中只提供PULL的方式解析与创建XML文件. 基础类 本例中使用的实体类的定义如下: public class CAddress impl