zoukankan      html  css  js  c++  java
  • 使用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();
            }
            
        }
    
    }
  • 相关阅读:
    五分钟搭建起一个包含CRUD功能的JqGrid表格
    TDD学习笔记【六】一Unit Test
    CQRS
    开源一个vue2的tree组件
    权限管理[Linux]
    文件管理[Linux]
    查看文本[Linux]
    常用命令[Linux]
    文件管理[Linux]
    状态机工作流
  • 原文地址:https://www.cnblogs.com/wlx520/p/4493092.html
Copyright © 2011-2022 走看看