用Dom4j解析xml文档中遇到的问题

本文档介绍如何使用Dom4j解析XML文档,特别是针对含有多个module和sql的结构。目标是通过模块ID获取对应的SQL语句,目前实现可以获取所有SQL,但存在优化问题:提供module ID后,仍会遍历所有模块的SQL。寻求解决方案以避免不必要的遍历。
摘要由CSDN通过智能技术生成

Dom4j解析XML文档

 

javaXML文档中读取数据的例子网上已经很多了,大概有4种,dom,sax,jdom,dom4j

我选择了dom4j,下面是我的例子,及一些看法和问题。

首先是要读取的xml文件,名子为:sql.xml。内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<pp>

       <module id="oo">

              <sql id="id1">

              select * from aa $:aa where aa=:aa}

           </sql>

              <sql id="id2">

              select aa from aa where aa is not null and (aa=1 or bb=2) and substr(aaed,0,3) = :dd

           </sql>

              <sql id="id3">

             SQL3

         </sql>

             

              <sql id="id4"><![CDATA[               

                  SQL4

                  ]]></sql>

             

              <sql id="id5"><![CDATA[

                            select t.aa,t.bb,t.cc,t.dd,t.ee,t.ff

                            from AA t

                            where t.aa =:dd

                            order by t.aa,t.bb

        ]]></sql>

              <sql id="id6"><![CDATA[

                            select dd from ff where ss='ff' and ff='ff' and  ee=:gg

        ]]></sql>

       

    <sql id="id7"><![CDATA[

                            SELECT usename FROM Login WHERE useid= ? and password= ?

        ]]></sql>

       </module>

      

       <module id="qq">

              <sql id="id8"><![CDATA[

                  DELETE  FROM dd WHERE ff in(:dd[split as array])

                  ]]></sql>

              <sql id="id9"><![CDATA[

        Select code, decode(code,'qqqqqq','成功','不成功') name from aa where dd = '3333'                

        ]]></sql>

              <sql id="id10"><![CDATA[

                            SQL10

        ]]></sql>

       </module>

</pp>

文档结构为,一个PP根结点,下有两个子结点(即2module)每个module下有若干个sql(由于是例子,所以隐去表名及字段)

 

想实现的功能:只要提供一个sqlid 就能得到对应的sql语句。

import java.io.File;

import java.util.Iterator;

import java.util.LinkedHashMap;

import java.util.List;

//import java.util.Map;

 

import org.dom4j.Attribute;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

 

public class Dom4jPaserTest <

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值