XML的解析

 

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

1:同包 :配置文件和帮助类在同一个包中 

读取方式: Demo1.class.getResourceAsStream(“db.properties”)

package parse;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Dome {
public static void main(String[] args) throws Exception {
    //同包
    InputStream is=Dome.class.getResourceAsStream("db.properties");
    Properties p=new Properties();
    p.load(is);
    System.out.println(p.getProperty("uname"));
    System.out.println(p.getProperty("upass"));
    
}
}

 

2:根路径:根路径和同包的配置方式是一样的只是加了一个‘ / ’和换到了另一个源文件夹

 

 读取方式:Demo1.class.getResourceAsStream("/db.properties") 

package parse;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Dome1 {
    public static void main(String[] args) throws Exception {
        // 同根
        //同根与同包区别就是多了个/
        InputStream is = Dome.class.getResourceAsStream("/db.properties");
        Properties p = new Properties();
        p.load(is);
        System.out.println(p.getProperty("uname"));
        System.out.println(p.getProperty("upass"));
    }
}
 

3:WEB-INF安全路径(WEB-INF 安全目录):放在这个目录下的文件不能直接被外界访问 ,只能间接访问

Demo1.class.getResourceAsStream("/WEB-INF/db.properties")

package parse;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class DomeServlet
 */
@WebServlet("/DEMO")
public class DomeServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
    InputStream is = arg0.getServletContext().getResourceAsStream("/WEB-INF/db.properties");
    Properties p=new Properties();
    p.load(is);
    System.out.println(p.getProperty("uname"));
    System.out.println(p.getProperty("upass"));
}
}
 

二:dom4j的使用

1、dome4j常用方法:

①.SAXReader:读取.xml文件专用方法
②.selectNodes():获取节点对象,返回的是一个List集合
③.attributeValue():获取指定对象的值
④.selectSingleNode():获取单个对象
⑤.getText():获取文本信息

 

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 Dome2 {
public static void main(String[] args) throws Exception {
    //获取小王的人名
        /**
         * 1.读取到student.xml的xml串的内容
         * 2、解析获取到所有的student标签内容
         * 3、获取到所有student标签的sid
         * 当sid=s003的时候,获取name标签的内容
         */
    InputStream is=Dome2.class.getResourceAsStream("students.xml");
    SAXReader sr=new SAXReader();//需要Jar包 
    Document doc = sr.read(is);
    //selectNodes获取对应节点对象 返回list
    List<Element> list = doc.selectNodes("/students/student");//导dom4j下面的
    for (Element element : list) {
        String sid=element.attributeValue("sid");
        if("s003".equals(sid)) {
            //selectSingleNode获取对应节点对象 返回单个元素对象    
            Element nameEle =(Element) element.selectSingleNode("name");
            System.out.println(nameEle.getText());
        }
    }
}
}
 

三:Xpath的使用

①@ 属性           “/”定义路径

Xpath比dom4j可以更快的获得值

package parse;

import java.io.InputStream;

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

public class Dome3 {
public static void main(String[] args) throws Exception {
    InputStream is=Dome3.class.getResourceAsStream("students.xml");
    SAXReader sr=new SAXReader();
    Document doc = sr.read(is);
    Element e=(Element) doc.selectSingleNode("/students/student[@sid='s002']/name");
    System.out.println(e.getText());
}
}
 

四、例题

要解析的题目:

1、获取所有action中的type的值

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 Dome4 {
public static void main(String[] args) throws Exception {
    InputStream is=Dome4.class.getResourceAsStream("config.xml");
    SAXReader sr=new SAXReader();
    Document doc = sr.read(is);
    // 获取对应节点对象
List<Element> list = doc.selectNodes("/config/action");
for (Element element : list) {
    //获取指定对象的属性值
    String types = element.attributeValue("type");
    System.out.println(types);
}
}
}
 

2.获取第二个action中的type的值

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 Dome4 {
public static void main(String[] args) throws Exception {
InputStream is = Dome4.class.getResourceAsStream("config.xml");
SAXReader sr = new SAXReader();
Document doc = sr.read(is);
// 获取对应节点对象
List<Element> Elements = doc.selectNodes("/config/action");
// 获取指定对象的属性值
String type =Elements.get(1).attributeValue("type");
System.out.println(type);
}
}
 

3、获取所有的action的所有forward的path

 

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;

import com.sun.xml.internal.ws.developer.MemberSubmissionEndpointReference.Elements;

public class Dome4 {
    public static void main(String[] args) throws Exception {

        InputStream is = Dome4.class.getResourceAsStream("config.xml");
        SAXReader sr = new SAXReader();
        Document doc = sr.read(is);
        // 获取对应节点对象
        List<Element> Element = doc.selectNodes("/config/action/forward");
        for (Element ele : Element) {
        //获取指定对象的属性值
            String path = ele.attributeValue("path");
            System.out.println(path);
        }
    }
}
 

4、获取第二个action的第二个forward的path

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;

import com.sun.xml.internal.ws.developer.MemberSubmissionEndpointReference.Elements;

public class Dome4 {
    public static void main(String[] args) throws Exception {

        InputStream is = Dome4.class.getResourceAsStream("config.xml");
        SAXReader sr = new SAXReader();
        Document doc = sr.read(is);
         List<Element> Elements = doc.selectNodes("/config/action");
        // 获取对应节点对象
        List<Element> Elementss = Elements.get(1).selectNodes("forward");
        for (Element eless : Elementss) {
        //获取指定对象的属性值
            String path = eless.attributeValue("path");
            System.out.println(path);
        }
    }
}
 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值