zoukankan      html  css  js  c++  java
  • xml_dom解析

     DOM解析(一)
    采用dom解析,会将xml文档全部载入到内存当中,然后将xml文档中的所有内容转换为tree上的节点(对象)。

    优点:
    可以随机解析
    可以修改文件
    可以创建xml文件
    缺点:
    适合解析小文件,对内存要求高

    1.1.1 输出xml 各个 关键信息(使用dom解析)

    package xml2;
    
    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.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    
    public class domTest {
    	public static void main(String[] args) throws Exception {
    		// 创建工厂
    		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    		DocumentBuilder builder = factory.newDocumentBuilder();
    		Document document = builder.parse("src/xml2/desk.xml");
    		//
    		NodeList list = document.getElementsByTagName("disk");
    		for (int i = 0; i < list.getLength(); i++) {
    			Node node = list.item(i);// 有两个disk ,通过索引可以获取任意一个disk
    			// 打印node节点中的属性节节点的name ,和value ,同时,属性也有可能为多个,所以返回的还是一个集合。
    			System.out.println(
    					node.getAttributes().item(0).getNodeName() + ":" + node.getAttributes().item(0).getNodeValue());
    			NodeList list2 = node.getChildNodes();
    			// 因为disk标签得子节点有空格,它没有子节点,所以不考虑这个得话,会出先空指针异常
    			// 解决这问题得话,直接判段一下子节点得type值是否为1(元素节点)
    			for (int j = 0; j < list2.getLength(); j++) {
    				if (list2.item(j).getNodeType() == 1) {
    					System.out.println(list2.item(j).getNodeName() + ":" + list2.item(j).getTextContent());
    				}
    			}
    		}
    
    		// Node attributes = node.getAttributes().item(0);
    //		System.out.println(attributes);
    //		System.out.println(attributes.getNodeName());
    //		System.out.println(attributes.getNodeType());
    //		System.out.println(attributes.getNodeValue());
    
    	}
    }


    <?xml version="1.0" encoding="UTF-8"?>
    <disks>
    	<disk name='c盘'>
    		<size>10G</size>
    		<directory>100</directory>
    		<file>200</file>
    	</disk>
    
    	<disk name='d盘'>
    		<size>20G</size>
    		<directory>200</directory>
    		<file>3000</file>
    	</disk>
    </disks>

  • 相关阅读:
    Android Dalvik 虚拟机
    我在北京找工作(二):java实现算法<1> 冒泡排序+直接选择排序
    如何用java比较两个时间或日期的大小
    [安卓破解]听网页浏览器,无需注册即可语音朗读
    (step8.2.4)hdu 1846(Brave Game——巴什博奕)
    Oracle Database 12c Release 1 Installation On Oracle Linux 6.4 x86_64
    HDU2084:数塔(DP)
    MySQL MVCC(多版本并发控制)
    POJ
    网易前端微专业,JavaScript程序设计基础篇:数组
  • 原文地址:https://www.cnblogs.com/yue-170305/p/11462526.html
Copyright © 2011-2022 走看看