• 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>

  • 相关阅读:
    Disruptor-架构思维的转变
    高性能队列——Disruptor
    flink Standalone Cluster
    Kafka 0.11.0.0 实现 producer的Exactly-once 语义(官方DEMO)
    Kafka 0.11.0.0 实现 producer的Exactly-once 语义(中文)
    Kafka 0.11.0.0 实现 producer的Exactly-once 语义(英文)
    flink window的early计算
    Flink 的Window 操作(基于flink 1.3描述)
    Flink Pre-defined Timestamp Extractors / Watermark Emitters(预定义的时间戳提取/水位线发射器)
    Flink Event Time Processing and Watermarks(文末有翻译)
  • 原文地址:https://www.cnblogs.com/yue-170305/p/11462526.html
Copyright © 2020-2023  润新知