其他分享
首页 > 其他分享> > xml的解析

xml的解析

作者:互联网

1.JAVA中配置文件的三种配置位置及读取方式

语法:demo1.class.getResourceAsStream("db.properties");

package com.pjl.parse;

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

/**配置文件存在位置
 * 其中properties文件就是资源文件中的一种
 * 1.同包
 * @author 小彭
 *
 */
public class demo1 {
      public static void main(String[] args) throws IOException {
		InputStream in= demo1.class.getResourceAsStream("db.properties");
	    Properties p=new Properties();
	    p.load(in);
	    System.out.println(p.getProperty("uname"));
	    System.out.println(p.getProperty("upwd"));
      }
}

 

 

语法:demo1.class.getResourceAsStream("/db.properties");

注:建一个根目录 ,用来存放配置文件

结果:跟以上的效果是一样的

是一个安全目录,凡是放在这个目录下的文件不能直接被外界访问到  

package com.pjl.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;

@WebServlet("/demo")
public class DemoServlet extends HttpServlet{
  @Override
protected void service(HttpServletRequest req, HttpServletResponse request) throws ServletException, IOException {
	// TODO Auto-generated method stub
	InputStream in= req.getServletContext().getResourceAsStream("/WEB-INF/db.properties");
	 Properties p=new Properties();
	    p.load(in);
	    System.out.println(p.getProperty("uname"));
	    System.out.println(p.getProperty("upwd"));
  }
}

运行结果:

2.dom4j的使用

思路:

/**
         * 1.读取到students.xml的xml串内容
         * 2.解析获取到所有的student标签的内容
         * 3,获取所有student标签的sid
         * 4.当sid=s003的时候,获取Name标签内容
         */

 2.1.读取到students.xml的xml串内容

package com.pjl.parse;

import java.io.InputStream;

import org.dom4j.Document;
import org.dom4j.DocumentException;
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);
	    System.out.println(doc.asXML());
	}
}

演示结果:

 

 

      2.2.解析获取到所有的student标签的内容

注:selectNodes获取对应节点对象 返回List 

public static void main(String[] args) throws Exception {
		
		InputStream in= Demo2.class.getResourceAsStream("students.xml");
	    SAXReader sr=new SAXReader();
	    Document doc= sr.read(in);
	    List<Element> stuEles= doc.selectNodes("/students/student");
	    for (Element stuEle: stuEles) {
			System.out.println(stuEle.asXML());
		}
	}

展示结果: 

 

 2.3,获取所有student标签的sid

注:attributeValue获取指定对象的属性值 

public static void main(String[] args) throws Exception {
		
		InputStream in= Demo2.class.getResourceAsStream("students.xml");
	    SAXReader sr=new SAXReader();
	    Document doc= sr.read(in);
	    List<Element> stuEles= doc.selectNodes("/students/student");
	    for (Element stuEle: stuEles) {
	    	String sid = stuEle.attributeValue("sid");
	    System.out.println(sid);
	    }
	}

展示效果:

 

2.4.当sid=s003的时候,获取Name标签内容

注:selectSingleNode获取对应节点对象 返回单个元素对象

public static void main(String[] args) throws Exception {
		
		InputStream in= Demo2.class.getResourceAsStream("students.xml");
	    SAXReader sr=new SAXReader();
	    Document doc= sr.read(in);
	    List<Element> stuEles= doc.selectNodes("/students/student");
	    for (Element stuEle: stuEles) {
	    	String sid = stuEle.attributeValue("sid");
	    	if("s003".equals(sid)) {
	    		Element nameEle= (Element) stuEle.selectSingleNode("name");
	    	    System.out.println(nameEle.getText());
	    	}
	    }
	}

展示效果:

 

 

3.xpath的使用

语法:/定义路径   @ 属性

案例:

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

展示结果:

 

 课外练习:

package com.pjl.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 Demo4 {
	public static void main(String[] args) throws Exception {
		InputStream in= Demo4.class.getResourceAsStream("config.xml");
		SAXReader sr= new SAXReader();
		Document doc=sr.read(in);
		List<Element> figEles=doc.selectNodes("/config/action");
		for (Element figEle: figEles) {
			//	獲取所以action中type的值
			String type=figEle.attributeValue("type");
			System.out.println(type);
			
			//獲取第二個action中type的值
			String type2 = figEles.get(1).attributeValue("type");
	     	System.out.println(type2);
			System.out.println("--------------");
			
			//获取第二个action下的所有forward的所有path
			Element element = figEles.get(1);//获取第二个action节点
			List<Element> forwardNodes = element.selectNodes("forward");
			for (Element forwardEl : forwardNodes) {
				String path=forwardEl.attributeValue("path");
				System.out.println(path);
			}
			
			System.out.println("--------------");
			//获取第二个action下的第二个forward的path
			String path=forwardNodes.get(1).attributeValue("path");
			System.out.println(path);

	

	}
}
}

标签:xml,String,SAXReader,System,println,import,解析,out
来源: https://blog.csdn.net/m0_52681702/article/details/119215953