`

Dom4j 解析及遍历XML 解决SQL硬编码

阅读更多

   在进行应用程序开发特别是一些主要以查询数据库为主的应用时,用很多SQL语句是必须的,这时,如果全把SQL语句写在程序代码中,很不利于维护代码,对于这种硬编码,我们自然可以通过将SQL语句保存到XML中,在程序中主要通过解析XML,然后找到对应的SQL语句,如果要修改或添加,我们也只需要按照自己定义的规则修改或添加,这样维护代码很容易。

 

  下面我写一个我自己常用的解决办法:

   我的思路是将SQL语句按照:

   <SqlData>

   <ClassName></ClassName>

   <Index></Index>

   <Sql>

  select * from table .....

                </Sql>

   </SqlData>

    ....

    ....

   的格式在xml进行存储,然后通过对应的className及Index号来进行查询,这样可以很方面的进行管理

   关于解析XML,我也提一下,我们知道常见的解析XML的方法有四种,分别是DOM,SAX,DOM4J和JDOM

   关于他们之间的具体区别和联系,可以参见下面的链接:http://developer.51cto.com/art/200903/117512.htm

   这里我分享一下通过DOM4J来进行我想要的XML解析:

   DOM4J解析XML相对比较简单,而且效率很高,但是需要外添加包dom4j-1.6.1.jar

   import java.io.File;

import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class SqlXmlPrase {
	
	String classFullName ;
	int index ;
	File file ;
	
	public SqlXmlPrase(String XmlPath){
		file = new File(XmlPath);
	}
	
	public String getSql(String classFullName,int index){
		String className = new Throwable().getStackTrace()[1].getClassName();//反射机制,得到当前类名,此处没有用到
		try {
			SAXReader saxReader = new SAXReader();//使用 SAXReader 解析 XML文档
			Document document = saxReader.read(file);
			Element root = document.getRootElement();//得到Root元素
			for(Iterator iterator = root.elementIterator();iterator.hasNext();)//依次进行迭代查询
			{
				Element element = (Element)iterator.next();
				String name= element.element("ClassName").getText();//查询ClassName
				int curIndex = Integer.parseInt(element.element("Index").getText());//查询Index
				if(name.equals(classFullName)&& index == curIndex)//进行比较,判断是否是自己需要的
				return element.element("Sql").getText();//如果是,返回
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		return null;
	}
	
	public static void main(String[] argv){
		  SqlXmlPrase dom4jParser=new SqlXmlPrase("c:\\sqlconfig.xml");
		  System.out.println(dom4jParser.getSql("**想查的类名***", 2));
	}
		   
}

 

分享到:
评论

相关推荐

    根据XML模版自动生成

    映射规则可以是硬编码的,也可以通过元数据或配置文件来定义。 3. **XML文件构造**:使用编程语言(如Java、Python、C#等)的XML库(如DOM、SAX、XMLStreamWriter等)创建XML文件。这些库提供了API,用于添加、修改...

    java日期和查询数据库生成XML文件类

    - 避免硬编码SQL语句,使用PreparedStatement预编译SQL,提高安全性。 - 使用try-with-resources语句管理数据库连接,确保资源及时关闭。 - 对于大型XML文件,考虑使用SAX避免内存溢出。 - 将日期格式化逻辑封装...

    xml和access文件相互转换工具

    2. **映射数据结构**:确定XML元素与Access数据库表之间的对应关系,这可能需要创建一个映射文件或使用硬编码规则来定义。 3. **数据转换**:遍历DOM树,根据映射关系将XML数据转换为Access数据库可以理解的格式,...

    java生成XML的方法【附demo源码下载】

    - 使用MyBatis的动态SQL功能,可以避免硬编码SQL语句,提高代码的可读性和可维护性。 总结来说,Java生成XML文件通常包括加载配置、建立数据库连接、执行SQL查询、构建XML结构以及写入文件这些步骤。在实际应用中...

    mybatis-plus+动态数据源

    DOM(Document Object Model)是一种解析XML文档的标准方法,将XML文件转换为内存中的树形结构,便于程序进行遍历、修改和操作。在配置动态数据源时,可能会用到DOM解析XML配置文件,以便动态加载和管理数据源信息...

    netgear_cm1000_scraper:刮擦Netgear CM1000 v2电缆调制解调器的Python代码

    它允许开发者通过CSS选择器或DOM遍历方法轻松地找到和提取所需的信息。 4. **网络通信**: 使用`requests`库可以处理HTTP/HTTPS协议,进行GET和POST等请求,获取调制解调器的状态信息,如连接速度、设备列表、信号...

Global site tag (gtag.js) - Google Analytics