zoukankan      html  css  js  c++  java
  • JDOM,dom4j方式解析XML

    <?xml version="1.0" encoding="UTF-8"?>
    <dataSources>
        <!-- 定义MySQL数据源 -->
        <dataSource id="mysql" class="xxx.xxx.xx">
            <property name="driverClassName">com.mysql.jdbc.Driver</property>
            <property name="url">jdbc:mysql://127.0.0.1:3306/userdb</property>
            <property name="username">root</property>
            <property name="password">123</property>
        </dataSource>
        
        <!-- 定义Oracle的数据源 -->
        <dataSource default="true" id="oracle" class="xxx.xxx.xx">
            <property name="driverClassName">com.oracle.jdbc.OracleDriver </property>
            <property name="url">jdbc:oracle:thin:@127.0.0.1:1521:ORCL </property>
            <property name="username">scott</property>
            <property name="password">tiger</property>
        </dataSource>
        
        <dataSource id="SQLServer" class="xxx.xxx.xx">
            <property name="driverClassName">com.oracle.jdbc.OracleDriver</property>
            <property name="url">jdbc:oracle:thin:@127.0.0.1:1521:ORCL</property>
            <property name="username">scott</property>
            <property name="password">tiger</property>
        </dataSource>
        
        <transaction>
            
        </transaction>
    </dataSources>
    使用JDOM解析XML文件
    package com.jdom.demo;
    
    import java.io.InputStream;
    import java.util.List;
    
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.input.SAXBuilder;
    import org.jdom.xpath.XPath;
    
    /**
     * 使用JDOM解析XML文件
     * 
     * @author Administrator 补全快捷键: Ctrl+2, L
     *
     */
    public class JDOMParser {
        public static void main(String[] args) throws Exception {
            //testJdomParser();
            testXPathXMLParser("oracle");
        }
    
        private static void testJdomParser() throws Exception {
            // 建造者设计模式
            SAXBuilder saxBuilder = new SAXBuilder();
            // 获取XML文件对应输入流
            InputStream in = JDOMParser.class.getClassLoader().getResourceAsStream("datasource.xml");
            // 通过构建器对象构建一个文档对象
            Document document = saxBuilder.build(in);
            // 获取根元素
            Element rootElement = document.getRootElement();
    
            // 获取根元素下面所有子元素
            // getChildren() 获取所有子元素集合
            // getChildren("元素名称") // 获取指定元素名称的元素集合
            List<Element> childList = rootElement.getChildren("dataSource");
    
            for (Element element : childList) {
                // 获取id属性值
                String id = element.getAttributeValue("id");
                String clazz = element.getAttributeValue("class");
                System.out.println("id=" + id + "-----class=" + clazz);
                // 获取所有的property子节点
                List<Element> propertyChild = element.getChildren("property");
    
                for (Element childEl : propertyChild) {
                    String name = childEl.getAttributeValue("name"); // 获取元素name属性值
                    String text = childEl.getTextTrim(); // 获取元素中的内容
    
                    System.out.println("name=" + name + "=========content=" + text);
                }
                System.out.println("--------------------------");
            }
        }
        
        /**
         * 使用XPath选取节点
         * http://www.cnblogs.com/hoojo/archive/2011/08/11/2134638.html XPath解析
         */
        private static void testXPathXMLParser(String dataSourceId) throws Exception{
            // 建造者设计模式
            SAXBuilder saxBuilder = new SAXBuilder();
            // 获取XML文件对应输入流
            InputStream in = JDOMParser.class.getClassLoader().getResourceAsStream("datasource.xml");
            // 通过构建器对象构建一个文档对象
            Document document = saxBuilder.build(in);
            // 获取根元素
    //        Element rootElement = document.getRootElement();
            // path: XPath表达式
            XPath xpath = XPath.newInstance("dataSources/dataSource[@id='"+dataSourceId+"']");
            Element dataSource = (Element) xpath.selectSingleNode(document);
            // "//" 选取配置元素组成集合,不考虑位置
            XPath propXpath = XPath.newInstance("property");
            List<Element> nodes = propXpath.selectNodes(dataSource); // 从选择到dataSource元素下面选择子节点
            for (Element el : nodes) {
                System.out.println(el.getAttributeValue("name")+"-------------"+el.getTextTrim());
            }
        }
    }
    dom4j常规方式解析 
    package com.dom4j.demo;
    
    import java.io.InputStream;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.XPath;
    import org.dom4j.io.SAXReader;
    
    public class Dom4jParser {
        public static void main(String[] args) throws Exception {
            dom4jXpath("mysql");
        }
    
        /**
         * dom4j常规方式解析 -> 使用命名空间方式解析
         * @throws Exception
         */
        private static void dom4j() throws Exception {
            // 创建SaxReader对象
            SAXReader reader = new SAXReader();
            InputStream in = Dom4jParser.class.getClassLoader().getResourceAsStream("datasource.xml");
            // 获取到文档对象
            Document document = reader.read(in);
            // 获取根元素对象
            Element rootElement = document.getRootElement();
            // System.out.println(rootElement);
            // 获取根元素下面所有子元素
            // List<Element> elements = rootElement.elements();
            // 获取根元素下面指定元素名称的子元素集合
            List<Element> elements = rootElement.elements("dataSource");
    
            for (Element el : elements) {
                System.out.println(el.attributeValue("id") + "-----" + el.attributeValue("class"));
                // 获取el元素下面所有子元素
                List<Element> childList = el.elements("property");
    
                for (Element childEl : childList) {
                    String name = childEl.attributeValue("name");
                    String text = childEl.getTextTrim();
                    System.out.println(name + "----------" + text);
                }
                System.out.println("------------------------------------------");
            }
        }
        
        /**
         * dom4j方式解析使用XPath 
         * @throws Exception
         */
        private static void dom4jXpath(String dataSourceId) throws Exception {
            // 创建SaxReader对象
            SAXReader reader = new SAXReader();
            InputStream in = Dom4jParser.class.getClassLoader().getResourceAsStream("datasource.xml");
            // 获取到文档对象
            Document document = reader.read(in);
            
            XPath xpath = document.createXPath("dataSources/dataSource[@id='"+dataSourceId+"']");
            Element dataSourceNode = (Element) xpath.selectSingleNode(document);
            System.out.println(dataSourceNode.attributeValue("id")+"----"+dataSourceNode.attributeValue("class"));
            
            xpath = document.createXPath("property");
            List<Element> propList = xpath.selectNodes(dataSourceNode);
            
            for (Element el : propList) {
                 String name = el.attributeValue("name");
                 String text = el.getTextTrim();
                 System.out.println(name+"--------------"+text);
            }
        }
    }
  • 相关阅读:
    梳理一下自己的技术关注面[转]
    在SharePoint 2010系统中安装RBS FILESTREAM Provider
    53套SharePoint 2010站点模版在线演示及下载
    sharepoint form认证下的当前在线用户统计和当日浏览量的统计
    MOSS部署常用的stsadm命令行
    asp.net实现伪静态的几种常用的方法
    新闻滚动效果JQuery实现
    百度编辑器Ueditor的使用
    新闻滚动JS
    SQL分页笔记
  • 原文地址:https://www.cnblogs.com/sunBinary/p/10639710.html
Copyright © 2011-2022 走看看