zoukankan      html  css  js  c++  java
  • java 解析 XML实例

    package com.hseact.fecp.servlet;
    
    import java.io.IOException;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    
    import org.json.JSONObject;
    import org.json.XML;
    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;
    
    /**
     * DOM方式解析xml
     */
    public class DOMTest {
    
        public static void main(String[] args) {
            //1、创建一个DocumentBuilderFactory的对象
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            //2、创建一个DocumentBuilder的对象
            try {
                //创建DocumentBuilder对象
                DocumentBuilder db = dbf.newDocumentBuilder();
                //3、通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下
                /*注意导入Document对象时,要导入org.w3c.dom.Document包下的*/
                Document document = db.parse("WebContent\template\demo.svg");//传入文件名可以是相对路径也可以是绝对路径
    
                //获取所有book节点的集合
                NodeList bookList = document.getElementsByTagName("svg");
                //通过nodelist的getLength()方法可以获取bookList的长度
                System.out.println("一共有" + bookList.getLength() + "本书");
                //遍历每一个book节点
                for (int i = 0; i < bookList.getLength(); i++) {
                    System.out.println("=================下面开始遍历第" + (i + 1) + "本书的内容=================");
            //❤未知节点属性的个数和属性名时:
                    //通过 item(i)方法 获取一个book节点,nodelist的索引值从0开始
                    Node book = bookList.item(i);
                    //获取book节点的所有属性集合
                    NamedNodeMap attrs = book.getAttributes();
                    System.out.println("第 " + (i + 1) + "本书共有" + attrs.getLength() + "个属性");
                    //遍历book的属性
                    for (int j = 0; j < attrs.getLength(); j++) {
                        //通过item(index)方法获取book节点的某一个属性
                        Node attr = attrs.item(j);
                        //获取属性名
                        System.out.print("属性名:" + attr.getNodeName());
                        //获取属性值
                        System.out.println("--属性值" + attr.getNodeValue());
                    }
       
    
                    NodeList childNodes = book.getChildNodes();
                  //遍历childNodes获取每个节点的节点名和节点值
                    System.out.println("第" + (i+1) + "本书共有" + childNodes.getLength() + "个子节点");
                    for (int k = 0; k < childNodes.getLength(); k++) {
                      //区分出text类型的node以及element类型的node
                        if(childNodes.item(k).getNodeType() == Node.ELEMENT_NODE){
                          //获取了element类型节点的节点名
                            System.out.print("第" + (k + 1) + "个节点的节点名:" + childNodes.item(k).getNodeName());
                          //获取了element类型节点的节点值
                           // System.out.println("--节点值是:" + childNodes.item(k).getFirstChild().getNodeValue());
                         //遍历book的属性
                            NamedNodeMap eleAttrs = childNodes.item(k).getAttributes();
                            for (int j = 0; j < eleAttrs.getLength(); j++) {
                                //通过item(index)方法获取book节点的某一个属性
                                Node attr = eleAttrs.item(j);
                                //获取属性名
                                System.out.print("属性名:" + attr.getNodeName());
                                //获取属性值
                                System.out.println("--属性值" + attr.getNodeValue());
                            } 
                        }
                    }
                    System.out.println("======================结束遍历第" + (i + 1) + "本书的内容=================");
                }
    
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
    }
    

      

  • 相关阅读:
    Spring Boot 使用 Dom4j XStream 操作 Xml
    Spring Boot 使用 JAX-WS 调用 WebService 服务
    Spring Boot 使用 CXF 调用 WebService 服务
    Spring Boot 开发 WebService 服务
    Spring Boot 中使用 HttpClient 进行 POST GET PUT DELETE
    Spring Boot Ftp Client 客户端示例支持断点续传
    Spring Boot 发送邮件
    Spring Boot 定时任务 Quartz 使用教程
    Spring Boot 缓存应用 Memcached 入门教程
    ThreadLocal,Java中特殊的线程绑定机制
  • 原文地址:https://www.cnblogs.com/pangguoming/p/6549906.html
Copyright © 2011-2022 走看看