栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

XML解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XML解析

目录

一、java中配置文件的三种配置位置以及读取方式

二、dom4j的使用

三、xpath的使用


一、java中配置文件的三种配置位置以及读取方式

同包:


            InputStream in=Demo1.class.getResourceAsStream("db.properties");
         

根路径:

  
          InputStream in=Demo1.class.getResourceAsStream("/db.properties");

web-inf安全路径:

InputStream in=request.getServletContact.getResourceAsStream("db.properties");

二、dom4j的使用

常用到:

1)selectNodes 

2)selectSingleNode

3)attributeValue

4)getText

package parse;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Demo2 {
            public static void main(String[] args) throws Exception {
                InputStream in=Demo2.class.getResourceAsStream("students.xml");
                SAXReader sr=new SAXReader();
                //将配置文件中的所有内容获取到了
                Document doc=sr.read(in);
//                selectNodes 根据标签名 返回标签集合
//                System.out.println(doc.asXML());
//                List studentsEles=doc.selectNodes("student");
//                System.out.println(studentsEles.size());
//                List studentEles=studentsEles.get(0).selectNodes("student");
//                System.out.println(studentEles.size());
                
                //selectNodes 根据标签名,返回单个标签,
            Element    stuEle=(Element) doc.selectSingleNode("students");
            List stuEles =stuEle.selectNodes("student");
                for (Element s : stuEles) {
                    System.out.println(s.attributeValue("sid"));//拿属性值
                    System.out.println(s.selectSingleNode("name").getText());//拿到标签里的文本内容
                }
            }
}

 InputStream in=Demo3.class.getResourceAsStream("students.xml");
        SAXReader sr=new SAXReader();
        Document doc=sr.read(in);
      Element stus002=(Element) doc.selectSingleNode("/students/studnet[@sid='s001']/name");
   System.out.println(stus002.getText());

三、xpath的使用

语法

1)   / 定义路径

2)   @ 属性

【案例】查找s002学生姓名

package parse;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Demo3 {
        
    public static void main(String[] args) throws Exception {
        InputStream in=Demo3.class.getResourceAsStream("students.xml");
        SAXReader sr=new SAXReader();
        Document doc=sr.read(in);
//    法1
//        Element stus002=(Element) doc.selectSingleNode("/students/student[@sid='s001']/name");
//        System.out.println(stus002.getText());
//    法2
        Element stusEle=(Element) doc.selectSingleNode("students");
        List stuEles=stusEle.selectNodes("student");
        for (Element s : stuEles) {
                if("s002".equals(s.attributeValue("sid"))) {
                    System.out.println(s.selectSingleNode("name").getText());
                }
        }  
    }
}
 

扩展案例


【案例1】获取所有action中的type值

package com.LX.zy;


import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

//案例1:拿到action的type值

public class Demo01 {
        public static void main(String[] args) throws DocumentException  {
            InputStream in=Demo01.class.getResourceAsStream("config.xml");
            SAXReader sr=new SAXReader();
            Document doc=sr.read(in);//?
            //selectNodes 根据标签名,返回单个标签,
            Element    cEle=(Element) doc.selectSingleNode("config");
            List cEles =cEle.selectNodes("action");
            for (Element s : cEles) {
                System.out.println(s.attributeValue("type"));//拿属性值
            }
            
        }
}
 

 效果图如下:

 

 

【案例2】获取第2个action中的type值

//获取第2个action里的type值

InputStream in=Demo01.class.getResourceAsStream("config.xml");
                SAXReader sr=new SAXReader();
                Document doc=sr.read(in);//
                //selectNodes 根据标签名,返回单个标签,
//                    
                Element    cEle=(Element) doc.selectSingleNode("/config/action[@path='/loginAction']");
                System.out.println(cEle.attributeValue("type"));

 

  效果图如下:

 

 【案例3】获取第2个 所有forward中的path值

InputStream in=Demo01.class.getResourceAsStream("config.xml");
                SAXReader sr=new SAXReader();
                Document doc=sr.read(in);
                Element conEl= (Element) doc.selectSingleNode("/config/action[@type='test.LoginAction']");
//                System.out.println(conEl);
                //System.out.println(conEl.attributeValue("path"));
                List    conEls=conEl.selectNodes("forward");
                for (Element e : conEls) {
                    System.out.println(e.attributeValue("path"));
                }
                

 

  效果图如下:

 

 【案例4】获取第2个 action第2个forward中的path值

//案例4 获取第2个action里的第2个forward所有path值
                InputStream in=Demo01.class.getResourceAsStream("config.xml");
                SAXReader sr=new SAXReader();
                Document doc=sr.read(in);
                Element conEl= (Element)

doc.selectSingleNode("/config/action[@type='test.LoginAction']/forward[@name='success']");
//                
                System.out.println(conEl.attributeValue("path"));
                

 效果图如下:

 


 

不得转载和抄袭!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/970096.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号