DOM4j解析xml文件以及Schema约束

来源:互联网 发布:手机版会员积分软件 编辑:程序博客网 时间:2024/05/16 16:57

 
一、单元测试
     * 搭建环境: 在工程中引入junit包,此包在MyEclipse再带的有,无需下载可以直接导入
          * 写测试方法的三个要求
       * 1.必须加注解@Test,表明这个方法是测试类
       * 2.方法必须是共有的,返回值必须为空
       * 3.不能含有参数
         
          @Test : 代表测试方法,使用的注解技术
               参数timeout: 指定执行方法所需最多时间(毫秒)
               expected: 指定方法会出现的异常类型(用元类表示,元类就是Class类)
          @Before : 执行每个测试方法之前都要执行的方法
          @After  : 执行每个测试方法之后都要执行的方法

         
          @Before 是在每个测试方式执行执行先执行的方法
          @BeforeClass 是在类加载器加载类到内存中之后立刻去执行的方法.
         
二、断点调试
          断点: 让程序执行到断点时停下来。
         
三、Dom4j解析(掌握)
          *DOM4j加载XML文档://DOM4j加载XML:SAXReader类的read方法,返回Document文档节点
                    SAXReader reader = new SAXReader();
                    Document document = reader.read("src/book.xml");    
          *DOM4j将内存中的DOM树写入硬盘文件:通过XMLWriter类的writ方法
                    //XMLWriter(OutputStream os,OutputFormat format);os参数是指出写入到哪个文件,format是指明写入的格式:有两种格式pretty漂亮的格式(常用),complex紧凑的格式
                    XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),OutputFormat.createPrettyPrint());
                    writer.write(document);              
         
          * document的方法:
                         List<Element> elements() : 拿到节点的所有子节点,返回List<Element>
                         List<Element> elements(String) : 拿到指定名字的所有的子节点(不包括孙子节点)
                         Element element(String) : 拿到指定名字的子节点
          * Element节点的方法:
                         setText() : 设置标签节点的内容
                         String getTest() : 获得标签节点的内容
                         Element addAttibute(String name ,String value ) : 添加标签的属性
                         boolean removeAttribute(String name) : 删除某个属性
                        
         
          * XPath表达式: 主要作用是获取某个节点的路径 。
                    涉及到的主要方法:
                         List list = document.selectNodes( "//foo/bar" );//selectNodes方法获取符合XPath表达式的所有节点,返回一个List集合

                         Node node = document.selectSingleNode( "//foo/bar/author" );//selectSingleNode方法获取符合XPath表达式的单个节点,返回Node
                        
                          String name = node.valueOf( "@name" );//获取node节点的那么属性的值属性值  *****

                        
                    XPath表达式基本规则:
                         路径表达式:
                         / 从根节点选取,如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径
                         // 相对路径,如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系)

                         .  选取当前节点
                         .. 选取当前节点的父节点
                         @  选取属性,@id 就表示选取id属性
                        
                         * 星号表示选择所有由星号之前的路径所定位的元素
                         [1]方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.
                              eg:/AAA/BBB[1]
                                                  选择AAA的第一个BBB子元素

                                                       <AAA>
                                                              <BBB/>
                                                              <BBB/>
                                                              <BBB/>
                                                              <BBB/>
                                                       </AAA> 
                         @id  选择id属性
                                   eg://@id选择所有的id属性     
                                        <AAA>
                                               <BBB id = "b1"/>
                                               <BBB id = "b2"/>
                                               <BBB name = "bbb"/>
                                               <BBB/>
                                        </AAA>   
                                    eg://BBB[@id]  选择有id属性的BBB元素节点
                                      <AAA>
                                               <BBB id = "b1"/>
                                               <BBB id = "b2"/>
                                               <BBB name = "bbb"/>
                                               <BBB/>
                                        </AAA> 
 
       
四、Schema(掌握如何引入一个schema文件)
     * 名称空间 : 指的是一个环境,所用的标签来自于哪个环境定义的。
     * 掌握引用schema文件:
               xml中引入schema约束的步骤:
                    1、查看schema文档,找到XML中需要的根元素,在xml中写出来
                         在xsd类型的schema文档中,第一个出现element关键字的标签的name属性就是XML中的根元素
                         eg:xsd文档中第一个element出现为<xs:element name='书架' > ,那么xml文件中的根元素应为书架
                                  
                                  
                    2、根元素来自哪个名称空间。使用xmlns指令来声明
                              名称空间xmlns是在schema中定义的,就是targetNamespace的值

                              <?xml version="1.0" encoding="UTF-8"?>
                              <itcast:书架 xmlns:itcast="http://www.itcast.com/book">
                             
                              </itcast:书架>                             
                    3、设置schemaLocation属性,指定使用的是哪个xsd文件即引入的名称空间根哪个xsd文件对应?
                    使用schemaLocation来指定:两个取值:第一个为名称空间 第二个为xsd文件的路径
                   
                    <?xml version="1.0" encoding="UTF-8"?>
                    <itcast:书架 xmlns:itcast="http://www.itcast.com/book"
                         schemaLocation="http://www.itcast.com/book book.xsd">
                   
                    </itcast:书架>
                   
                    4、指定schemaLocation属性的来源。它来自一个标准的名称空间,w3c制定的.
                         <?xml version="1.0" encoding="UTF-8"?>
                              <itcast:书架 xmlns:itcast="http://www.itcast.com/book"
                                             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   //这个标准的空间是固定的,每一个xml文件中都相同
                                             xsi:schemaLocation="http://www.itcast.com/book book.xsd">
                        
                         </itcast:书架>
                        
                    5、只要以上4部搞好了,对于子标签myeclipse就有提示
0 0