2021-07-10

这篇博客介绍了Java中XML解析的三种方法:使用Properties类解析配置文件,SAXReader进行SAX解析,以及在Servlet中读取WEB-INF目录下的资源。通过示例代码详细展示了如何读取和操作XML文件中的数据。
摘要由CSDN通过智能技术生成

XML解析今天学习了XML的解析代码,过程还是比较简单的。简单介绍一下: 配置文件类型(三种方法) 第一种:(同级目录和不同级目录) / 斜杆代表主目录 不同级目录: (/conf/+文件名(xxxx.xml)) 解析例题:InputStream is = test.class.getResourceAsStream("/com.conf/jdbc.properties");"/com.conf/jdbc.properties" 文件名路径 test.class.getResourceAsStream Test导包 拿到test里面的Class得到 Resource 以流的形式读出来jdbc.properties 文件名Properties解析 : Properties p=new Properties();当解析的时候把文件加进去p.load(is); //抛出异常IOException输出文件的名字和密码String p1 = p.getProperty(“jdbc.username”); //文件名 System.out.println (p1); String p2 = p.getProperty(“jdbc.password”); //文件密码 System.out.println(p2); 同级目录:(直接写名称) 解析例题:InputStream is = test.class.getResourceAsStream(“jdbc.properties”);//直接写文件名称​test.class.getResourceAsStream Test导包 拿到test里面的Class得到 Resource 以流的形式读出来jdbc.properties 文件名第二种:(XML)涉及文件读取,都要先拿到流test.class.getResourceAsStream(“文件名”); (不论同级或不同级) 解析例题:InputStream is = test.class.getResourceAsStream(“student.xml”); sax解析 SAXReader sr=new SAXReader(); Document d = sr.read(is);//抛出异常 DocumentException //selectNodes 返回相同的多个 //Node和Element是一样的 //selectSingleNode 返回单个 而persons里面的person有两个 List ls = d.selectNodes(“persons/person”);//查询节点 //拿到persons节点 List ls = d.selectNodes(“persons/person”);//查询节点//System.out.println(n);//org.dom4j.tree.DefaultElement@d6da883 [Element: ]for (DefaultElement e : ls) { //[Attribute: name id value “1001”] 属性名name:id id的值value:1001 //[Attribute: name id value “1002”] 属性名name:id id的值value:1002 //asXML()转为xml对象第三种:(Servlet) 读取WEB-INF底下的东西在Servlet中 InputStream is = request.getServletContext().getResourceAsStream(“WEB-INF/jdbc.properties”); Properties p=new Properties(); p.load(is); String str = p.getProperty(“jdbc.password”); //jdbc.password为文件内容 //System.out.println(str);//root123方法介绍: asXML();输出所代表的xml语句 attributeCount();输出属性个数 getStringValue();输出对应的值 e.attributeValue();属性值 例题:拿最里面的属性:例如:拿到sex为男的人的名字if(“男”.equals(s2)) { //男在前面不会容易报错 //e就是性别为男的人 //e.selectNodes 读多个 //e.selectSingleNode读单个 Node n = e.selectSingleNode(“name”);//读name(if已判断) System.out.println(n.getStringValue());//老黑 }例题:一次解决 读取性别为男的人的名字Node n = d.selectSingleNode(“persons/person[@sex=‘男’]/name”);//读persons里面的person里面性别为男的nameSystem.out.println(n.asXML());//asXML输出他的xml语句System.out.println(n.getStringValue());//输出对应的值思维拓展:[@d6da883 //d6da883表示对象地址 [ //List集合 //元素是persons * 元素身上的属性attributes * 属性是一个集合 元素可以有多个属性,所以是集合 Element: ] ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值