• 使用DOM解析XML文档


    简单介绍一下使用DOM解析XML文档,解析XML文件案例:

    <?xml version="1.0" encoding="UTF-8"?>
    
    -<pet>
    
    
    -<dog id="1">
    
    <姓名>小白</姓名>
    
    <健康值>100</健康值>
    
    <亲密度>0</亲密度>
    
    <年龄>1岁</年龄>
    
    </dog>
    
    
    -<dog id="2">
    
    <姓名>黄鼠狼</姓名>
    
    <健康值>30</健康值>
    
    <亲密度>90</亲密度>
    
    <年龄>5岁</年龄>
    
    </dog>
    
    
    -<dog id="3">
    
    <姓名>小东</姓名>
    
    <健康值>90</健康值>
    
    <亲密度>10</亲密度>
    
    <年龄>3岁</年龄>
    
    </dog>
    
    </pet>

    使用DOM解析XML文档

    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.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    
    /**
     * 使用DOM解析XML文档
     * @author Administrator
     *
     */
    public class DomReadXML {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            
            //========使用DOM解析XML
            //第一步:建立DOM解析工厂对象实例
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            
            
            try {
                //第二步:从DOM解析工厂中获取解析器
                DocumentBuilder db = dbf.newDocumentBuilder();
                
                //第三步:解析XML文件;载入XML文件得到Document即DOM树
                Document dom = db.parse("file:///D:/Desktop/chapter14/教学演示案例/示例3:使用内部DTD文件/pet2.xml");
                
                //得到所有狗狗节点信息
                NodeList nl = dom.getElementsByTagName("dog");
                System.out.println(nl.getLength());
                //循环取出信息
                for (int i = 0; i < nl.getLength(); i++) {
                    
                    //得到每只狗狗节点
                    Node dog = nl.item(i);
                    
                    //得到狗狗的属性(即ID)
                    Element el = (Element)dog;
                    String id = el.getAttribute("id");
                    System.out.println("ID:"+id);
                    
                    //获取狗狗的子节点信息
                    for(Node dog_child = dog.getFirstChild();dog_child!=null;dog_child = dog_child.getNextSibling()){
                        
                        //为了防止打印空格(即#text);需要判断当前对象为Node节点对象
                        if(dog_child.getNodeType() == Node.ELEMENT_NODE){
                            String name = dog_child.getNodeName();
                            String value = dog_child.getFirstChild().getNodeValue();
                            System.out.println(name+":"+value);
                        }
                    }
                    
                }
                
            } 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();
            }
            
        }
    
    }
  • 相关阅读:
    CF938E Max History
    经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷
    在 Intenseye,为什么我们选择 Linkerd2 作为 Service Mesh 工具(Part.2)
    在 Intenseye,为什么我们选择 Linkerd2 作为 Service Mesh 工具(Part.1)
    Java概述
    算法 --- 二分法 冒泡排序 递归 快速排序
    二维数组
    数组
    SNMP "Simple Network Management Protocol" "简单网络管理协议"。
    常用api --- BigDecimal 包装类 Integer Arrays
  • 原文地址:https://www.cnblogs.com/wlx520/p/4493092.html
Copyright © 2020-2023  润新知