javawebday10(xpath查询节点 dom4j crud)

/*
 * 使用dom4j实现修改节点的操作
 *  修改第一个head下面的age元素的值<age>30</age>
 *      1、得到document
 *      2、得到根节点 然后得到第一个head元素
 *      3、得到第一个head下面的age
 *          element("")方法
 *      4、修改值30
 *          使用setText("文本内容")方法
 *      5、回写xml
 * 使用dom4j实现删除节点的操作
 *      删除第一个head下面的titile元素    
 * 
 *          1、得到document
 *          2、得到根节点
 *          3、得到第一个head标签
 *          4、得到第一个head下面的title元素
 *          5、删除(使用head删除title)
 *              得到school的父节点
 *                  第一种直接得到head
 *                  使用方法 getParent方法得到
 *              删除操作
 *                  在head上面执行remove方法删除节点
 *          6、回写xml
 * 使用dom4j获取属性的操作
 *  获取第一个head里面的属性id的值
 *  步骤
 *      1、得到document
 *      2、得到根节点
 *      3、得到第一个head元素
 *      4、得到head里面的属性值
 *          attributeValue("id");
 *          在head上面执行这个方法 里面的参数是属性名称
 *      
 * 使用dom4j支持xpath的操作
 *  可以直接获取到某个元素
 *  第一种形式
 *      /aa/bb/cc 表示一层一层的 aa下面 bb下面的cc
 *  第二种形式
 *      //bbb 表示和这个名称相同表示只要名称是bbb都得到
 *  第三种形式
 *      /* 所有元素
 *  第四种形式
 *      bbb[1] 表示第一个bbb元素
 *      bbb[last()] 表示最后一个bbb元素
 *  第五种形式
 *      //bb[@id] 表示只要bb元素上面有id属性 都得到
 *  第六种形式
 *      //bbb[@id='b1']  表示元素名称是bbb 在bbb上面有id属性 并且id属性是b1   
 * 使用dom4j支持xpath具体操作
 *  默认的情况下 dom4j不支持xpath
 *  如果想要在dom4j里面是有xpath
 *      第一步需要 引入支持xpath的jar包 使用 jaxen-1.1.6.jar
 *      需要把jar包导入文件
 *  在dom4j里面提供了两个方法 用来支持xpath
 *      selectNodes("xpath表达式")
 *          获取多个节点
 *      selectSingleNode("xpath表达式")
 *          获取一个节点
 *      使用xpath实现 查询xml所有name元素的值
 *          所有name元素的xpath表示
 *          使用 selectNodes("//name")
 *      1、得到document
        2、直接使用selectNodes("//name") 方法得到所有的name

            //得到document
            Document document = domUtils.document();
            //使用selecNodes()
            List<Node> list = document.selectNodes("//title");
            //遍历list集合
            for (Node node : list) {
                //node是每一个name元素
                //得到name元素里面的值
                String s = node.getText();
                System.out.println(s);
 *使用xpath实现 获取第一个head下面的title的值
 *  //head[@id="1"]/title
 *  使用到selectSingleNode("//head[@id="1"]/title")    
 *  步骤和代码
 *  
      1、得到document
      2、直接使用selectSingleNode 方法实现
        xpath : //head[@id="1"]/title

    //得到document
    Document document = domUtils.document();
    //直接使用selectSingleNode 方法实现  双引号里面用单引号来表示属性值
    Node name = document.selectSingleNode("//head[@id='1']/title");
    //得到name里面的值
    String s = name.getText();
    System.out.println(s);
 */
    //删除 根据id删除
    public static void delHead(String id) throws Exception {
         /*
         * 1、创建解析器
         * 2、得到document
         * 3、获取到所有的id
         *  使用xpath  //id 返回list集合
         * 4、遍历list集合
         * 5、判断集合里面的id和传递的id 是否相同
         * 6、如果相同 把id所在的head删除
         * 
         */
         //创建解析器
        SAXReader saxr = new SAXReader();
        // 得到document
        Document document = saxr.read("src/ee/11.xml");
        //获取所有的id标签 不是属性 xpath://id
        List<Node> list = document.selectNodes("//id");
        //遍历list集合
        for (Node node : list) {//node是每一个id元素
            //得到id的值
            String id1 = node.getText();
            //判断id和传递的id是否相同
            if(id1.equals(id)) {//id相同
                //得到head节点
                Element head = node.getParent();
                //获取head的父节点
                Element rest = head.getParent();
                //删除head
                rest.remove(head);
            }
        }
        //回写xml
        OutputFormat of = OutputFormat.createPrettyPrint();
        XMLWriter xmlw = new XMLWriter(new FileOutputStream("src/ee/11.xml"),of);
        xmlw.write(document);
        xmlw.close();
    }
    //使用sax 添加标签
    public static void addAbc() throws Exception{
        /*
         * 1、创建解析器
         * 2、得到document
         * 3、获取到根节点
         * 4、在根节点上面创建abc标签
         * 5、在ab标签上面一次添加  a b c 
         * 6、在a b c 上面依次添加值
         * 7、回写xml
         */
        //创建解析器
        SAXReader saxr = new SAXReader();
        //得到document
        Document document = saxr.read("src/ee/11.xml");
        //得到根节点
        Element root = document.getRootElement();
        //在根节点上面添加abc标签
        Element abc = root.addElement("abc");
        //在abc标签上面添加 a b c标签
        Element a = abc.addElement("a");
        Element b = abc.addElement("b");
        Element c = abc.addElement("c");
        //a b c 上面一次添加值
        a.setText("a1");
        b.setText("b1");
        c.setText("c1");
        //回写xml
        OutputFormat of = OutputFormat.createPrettyPrint();
        XMLWriter xmlw = new XMLWriter(new FileOutputStream("src/ee/11.xml"),of);
        xmlw.write(document);
        xmlw.close();
    }
    //使用xpath实现 获取第一个head下面的title的值
    private static void test2() throws Exception {
        /*
         * 1、得到document
         * 2、直接使用selectSingleNode 方法实现
         *  xpath : //head[@id="1"]/title
         */
        //得到document
        Document document = domUtils.document();
        //直接使用selectSingleNode 方法实现  双引号里面用单引号来表示属性值
        Node name = document.selectSingleNode("//head[@id='1']/title");
        //得到name里面的值
        String s = name.getText();
        System.out.println(s);
    }
    //查询xml中所有name元素的值
    public static void test1() throws Exception{
        /*
         * 1、得到document
         * 2、直接使用selectNodes("//name") 方法得到所有的name
         */
        //得到document
        Document document = domUtils.document();
        //使用selecNodes()
        List<Node> list = document.selectNodes("//title");
        //遍历list集合
        for (Node node : list) {
            //node是每一个name元素
            //得到name元素里面的值
            String s = node.getText();
            System.out.println(s);
        }

    }
展开阅读全文

XPath节点

02-25

<p style="font-size:16px;">rn XML是所有软件开发人员都应该熟悉的技术,如果你还不熟悉就选择这门课程。rn</p>rn<p style="font-size:16px;">rn <strong><br />rn</strong> rn</p>rn<p style="font-size:16px;">rn <strong>第1章 XML概述</strong> rn</p>rn<p style="font-size:16px;">rn 什么是XML、XML和HTML之间的区别rn</p>rn<p style="font-size:16px;">rn <strong>第2章 XML编辑工具</strong> rn</p>rn<p style="font-size:16px;">rn 跨平台文本编辑工具、Windows平台文本编辑工具、Visual Studio Code工具和Altova XMLSpy工具rn</p>rn<p style="font-size:16px;">rn <strong>第3章 XML文档结构</strong> rn</p>rn<p style="font-size:16px;">rn 声明、元素、属性、实体、CDATA节、注释和名字空间rn</p>rn<p style="font-size:16px;">rn <strong>第4章 文档类型定义</strong> rn</p>rn<p style="font-size:16px;">rn 有效的文档、编写DTD、DTD元素定义、DTD属性定义rn</p>rn<p style="font-size:16px;">rn <strong>第5章 XML Schema</strong> rn</p>rn<p style="font-size:16px;">rn 什么是Schema?、Schema与DTD比较、Schema文档结构、Schema数据类型、元素数量、Schema属性定义rn</p>rn<p style="font-size:16px;">rn <strong>第6章 XPath技术</strong> rn</p>rn<p style="font-size:16px;">rn 什么是XPath?、XPath节点和XPath语法rn</p>rn<p style="font-size:16px;">rn <strong>第7章 解析XML文档</strong> rn</p>rn<p style="font-size:16px;">rn 解析XML文档概述、DOM解析XML、SAX解析XMLrn</p>rn<p style="font-size:16px;">rn <strong>第8章 Java语言解析XML</strong> rn</p>rn<p style="font-size:16px;">rn DOM4J概述、示例:遍历节点、示例:插入节点、示例:删除节点rn</p>rn<p style="font-size:16px;">rn <strong>第9章 Python语言解析XML</strong> rn</p>rn<p style="font-size:16px;">rn ElementTree模块概述、示例:遍历节点、示例:插入节点、示例:删除节点rn</p>rn<p style="font-size:16px;">rn <strong>第10章 C#语言解析XML</strong> rn</p>rn<p style="font-size:16px;">rn .NET Framework解析XML概述、Visual Studio Code开发C#环境搭建、示例:遍历节点、示例:插入节点、示例:删除节点rn</p>rn<div>rn <br />rn</div>

dom4j中应用xpath问题

08-11

xml文件结构:rnrn rn rn rn EmpIDrn DeptIDrn UserNamern rn rn PstNamern rn rn Sexrn rn rn LoginIDrn rn rn LoginPwdrn rn rn Gradern rn rn Memorn rn rnrnrnrn......rnrnDocument mapDoc = null;rnfilePath="C:\myxml\map.xml";rnSAXReader saxReader = new SAXReader();rnmapDoc = saxReader.read(filePath);rnNode newRootInfo = mapDoc.selectSingleNode("\\mapping\root");rnString newRootName= node.valueOf( @name );rnString newRowName= node.valueOf( @rowName);rnrn......rnrnrnNode newRootInfo = mapDoc.selectSingleNode("\\mapping\root");就出错了~rnStandardWrapperValve[action]: Servlet.service() for servlet action threw exceptionrnrnjavax.servlet.ServletException: Servlet execution threw an exceptionrnrnjavax.servlet.ServletException: Servlet execution threw an exceptionrnrn at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)rnrn at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)rnrn at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)rnrn at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)rnrn at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)rnrn at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)rnrn at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)rnrn at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)rnrn at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)rnrn at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)rnrn at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)rnrn at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)rnrn at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)rnrn at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)rnrn at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)rnrn at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)rnrn at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)rnrn at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)rnrn at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)rnrn at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)rnrn at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)rnrn at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)rnrn at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)rnrn at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)rnrn at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)rnrn at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)rnrn at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)rnrn at java.lang.Thread.run(Thread.java:534)rnrn请教一下!:)~~~~rnrnrnrnrnrn 论坛

没有更多推荐了,返回首页