XML的解析

XML的解析

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

       1.1  XML*.properties(属性文件)

         1*.properties文件

             Key=value

             #注释

           //util包下的属性文件类

          Properties    properties=new Properties();

           //加载一个properties

           Properties.load(is);

           //某一个键的值

        Properties.getProperty(“键名”);

 代码如下:

//获取同包下的资源文件,将其转化为流对象
      InputStream  in=PropertiesDemo.class.getResourceAsStream("/db.properties");
     //文件解析工具类(Properties)
       Properties  p=new Properties();
     //加载资源文件   
       p.load(in);
      //得到文件key对应的value值
      System.out.println(p.getProperty("uname"));
      System.out.println(p.getProperty("url"));
       

结果:

mybatis_ssm
jdbc:mysql://localhost:3306/mybatis_ssm

  

           1.2 存放位置

            1.2.1   src根目录下

            类名:class.getresourceAsStream(“/config.properties”);

             1.2.2   与读取配置文件的类在同一包

                类名:class.getResourceAsStream(“config2properties.”);

            1.2.3 WEB-INF(或其子目录下)

                 ServletContext sc=this.getServletContext();

       InputStreais=sc.getResourceAsStream("/WEB-INF/db.properties");

     代码:

 ServletContext context=request.getServletContext();
         InputStream in=context.getResourceAsStream("/WEB-INF/db.properties");
        //专门的工具类
           Properties  p=new Properties();
           p.load(in);
           System.out.println(p.getProperty("uname"));
           System.out.println(p.getProperty("url"));

 

 

           2 dom4j+xpath 解析xml 文件

               Xpath 等同于数据库的select语句

             document.selectNodes(xpath);//查一组

             document.selectSingleNode(xpath);//查单个

 代码:

           

SAXReader sax=new SAXReader();
      Document dos=sax.read(new  File("D:\Exxp\javaEE06\src\com\zking\config.xml"));      
     //查一组
       List   os=dos.selectNodes("/config/action");
         for(Object o:os) {
           Element elm=(Element)os;
            System.out.print(elm.attributeValue("name"));
          System.out.print(elm.attributeValue("path"));
          System.out.println(elm.attributeValue("redirect"));
       }
       //查询一个
        Element et=(Element)dos.selectSingleNode("/config/action");
          System.out.println(et.attributeValue("path"));

                  DOM由节点组成

             Node

              元素节点

             属性节点

               文本节点

获取指定的属性节点

       InputStream is = XmDemo.class.getResourceAsStream("students.xml");
		SAXReader saxx = new SAXReader();
		Document docc = saxx.read(is);
      Element node=(Element)                            
docc.selectSingleNode("students/student[@sid='s002']"); System.out.println(node.asXML());

  

结果:

<student sid="s002">
		<name>小芳</name>
	</student>

  

              3 dom4J 解析

              SAXReader                       解析器

            Read(XML路径)                得到document对象

             getRootElement               获取根节点

               Element(节点名称)             获取根节点下的指定节点信息

              attributeValue(属性名)        获取属性值

            Element(节点名称)              获取节点的Element对象

             getText()                     获取节点的值

作业

// Xpath解析 能够将xml格式的串当做目录结构来进行查找
		List<Element> selectNodes = doc.selectNodes("config.xml");
		   for(Object o:doc.selectNodes("/config/action")) {
	    	   Element elm=(Element)o;
	    	  // 1、获取所有action中的type的值
			 System.out.println(elm.attributeValue("type"));
			
	       }
		   
		   // 2、获取第二个action中的type的值
		   Element node=(Element) doc.selectSingleNode("/config/action[@path='/loginAction']");
           System.out.println(node.attributeValue("type"));
//           
           // 3、获取第二个action的所有forward的path
		   for(Object o:doc.selectNodes("/config/action/forward")) {
	    	   Element elm=(Element)o;
			//  System.out.println(elm.attributeValue("path"));
			 
	       }
		 //  4、获取第二个action的第二个forward的path
		   Element nodee=(Element) doc.selectSingleNode("/config/action/forward[@class='sa']");
        //   System.out.println(nodee.attributeValue("path"));
		   

  

原文地址:https://www.cnblogs.com/xmf3628/p/10917240.html