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");
注:建一个根目录 ,用来存放配置文件
结果:跟以上的效果是一样的
- WIN-INF安全路径
是一个安全目录,凡是放在这个目录下的文件不能直接被外界访问到
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