`
yuyeyi
  • 浏览: 38150 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

用dom4j组件解析如下XML格式的文件:

阅读更多
<?xml version="1.0" encoding="UTF-8"?> 
<generator> 
<table name="login" operation="1"> 
      <column name="username" handle="0">aaa </column> 
      <column name="password" handle="0">123 </column> 
</table> 
<table name="login" operation="2"> 
      <column name="id" handle="1">1 </column> 
      <column name="username" handle="0">bbb </column> 
      <column name="password" handle="0">444 </column> 
</table> 
<table name="login" operation="3"> 
      <column name="id" handle="1">4 </column> 
</table> 
</generator> 
规则: <table>operation 1表insert,2表update,3表delete. 
<column>handle 1表作为where条件,0表作为操作字段。 
要求:按照规则生成三条SQL语句!(即做一个方法解析xml文件生成一个含有三条SQL语句的字符串) 
/** 
    *解析XML文件生成一个含有可执行SQL语句的字符串 
    *@paramxmlFileName 
    *@returnSQL 
    */ 
    public String parseXmltoSQL(String xmlFileName) { 
      StringBuffer sbsql = new StringBuffer(); 
      SAXReader reader = new SAXReader(); 
      try { 
          Document document = reader.read(new File(xmlFileName)); 
          Element element = document.getRootElement(); 
          Iterator it = element.elementIterator("table"); 
          while (it.hasNext()) { 
              element = (Element) it.next(); 
              //获得对表的操作 
              String oper = element.attributeValue("operation"); 
              //获得表名 
              String tableName = element.attributeValue("name"); 
              if ("1".equals(oper)) { 
                  sbsql.append("insert into ").append(tableName); 
                  Iterator it2 = element.elementIterator("column"); 
                  String columnName1 = null; 
                  String columnValue1 = null; 
                  String columnName2 = null; 
                  String columnValue2 = null; 
                  if (it2.hasNext()) { 
                    element = (Element) it2.next(); 
                      columnName1 = element.attributeValue("name"); 
                      columnValue1 = element.getText(); 
                  } 
                  if (it2.hasNext()) { 
                    element = (Element) it2.next(); 
                      columnName2 = element.attributeValue("name"); 
                      columnValue2 = element.getText(); 
                  } 
                  sbsql.append("("+columnName1+","+columnName2+")"+" values('"+columnValue1+"','"+columnValue2+"')\n"); 
                  
              } elseif ("2".equals(oper)) { 
                  sbsql.append("update ").append(tableName); 
                  Iterator it2 = element.elementIterator("column"); 
                  String columnName1 = null; 
                  String columnValue1 = null; 
                  String columnName2 = null; 
                  String columnValue2 = null; 
                  String columnName3 = null; 
                  String columnValue3 = null; 
                  if (it2.hasNext()) { 
                        element = (Element) it2.next(); 
                          columnName1 = element.attributeValue("name"); 
                          columnValue1 = element.getText(); 
                    } 
                  if (it2.hasNext()) { 
                    element = (Element) it2.next(); 
                      columnName2 = element.attributeValue("name"); 
                      columnValue2 = element.getText(); 
                  } 
                  if (it2.hasNext()) { 
                    element = (Element) it2.next(); 
                      columnName3 = element.attributeValue("name"); 
                      columnValue3 = element.getText(); 
                  } 
                  sbsql.append(" set "+columnName2+"='"+columnValue2+"',"+columnName3+"='"+columnValue3+"' where "+columnName1+"="+columnValue1+"\n"); 
                  
              }elseif ("3".equals(oper)) { 
                  sbsql.append("delete from ").append(tableName); 
                  Iterator it2 = element.elementIterator("column"); 
                  String columnName1 = null; 
                  String columnValue1 = null; 
                  if (it2.hasNext()) { 
                        element = (Element) it2.next(); 
                          columnName1 = element.attributeValue("name"); 
                          columnValue1 = element.getText(); 
                    } 
                  sbsql.append(" where "+columnName1+"="+columnValue1); 
                  
              } 
          } 
      } catch (DocumentException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
      } 
      return sbsql.toString(); 
    } 
分享到:
评论

相关推荐

    dom4j---xml解析jar包

    在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行的、功能强大的开放源代码库。这个库不仅简化了XML处理,还提供了XPath和XSLT的支持,使其成为Java开发者处理XML的首选工具之一。 **...

    DOM4J 解析XML

    **DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    XML 解析器是指将 XML 文档转换为计算机可以理解的格式的软件组件。常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. ...

    基于DOM4j和POI实现的XML文件转换为XLS(即标准EXCEL)的JAVA程序

    本项目就是关于如何使用DOM4j解析XML文件,并利用Apache POI将其转换为标准的XLS(Excel)文件。 首先,DOM4j是Java中一个灵活且功能强大的XML处理库,它提供了完整的API来读取、操作和写入XML文档。通过DOM4j,...

    dom4j解析xml文件必备jar包

    总结来说,这个压缩包提供了DOM4J解析XML文件所需的关键组件,包括DOM4J本身、XPath处理器Jaxen以及XML解析器Xerces。有了这些工具,开发者可以高效地处理XML文档,实现数据的读取、查询和修改,为Java应用程序带来...

    dom4j-1.6.1-解析xml架包.zip

    在本文中,我们将深入探讨DOM4J 1.6.1版本的核心特性、使用方法以及如何在实际项目中应用这个库来解析XML文件。 首先,DOM4J采用了Document Object Model (DOM)接口,但它通过提供更直观的Java API,克服了DOM的...

    摇奖项目(dom4j解析xml随机抽取个人信息)

    标题中的“摇奖项目(dom4j解析xml随机抽取个人信息)”揭示了这是一个基于Java Web的摇奖系统,它利用DOM4J库来解析XML文件,从中随机选取用户信息进行抽奖。DOM4J是一个非常流行的Java XML API,它提供了丰富的...

    dom4j解析

    DOM4J提供了多种方式来解析XML文档,包括使用SAXReader或DOMReader。以下是一个使用SAXReader解析XML的示例: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io....

    Dom4j解析struts2框架的struts.xml

    本篇文章将深入探讨如何使用Dom4j这个XML处理库来解析`struts.xml`,以便自定义和配置Struts2框架。 Dom4j是一个灵活且功能丰富的Java库,专门用于处理XML文档。它提供了全面的API,可以方便地读取、写入、修改和...

    dom4j需要的包

    1. **解析XML**:DOM4J提供了两种主要的解析方式,SAX(Simple API for XML)和DOM。SAX解析器是基于事件的,适用于大型XML文件,因为它只需要较少的内存。DOM解析器则会将整个XML文档加载到内存中,适合小到中等...

    使用dom4j操作xml

    ### 使用dom4j操作XML详解 #### 一、DOM4j简介与配置 **DOM4j** 是一款专为Java平台设计的开源XML解析处理工具。它的设计充分考虑了性能和易用性,同时提供了对DOM、SAX及JAXP等标准的支持,因此非常适合进行复杂...

    dom4j解析struts.xml需要的包装类

    总结起来,`dom4j`是解析XML文件的强大工具,而`ActionWrapper`、`PackageWrapper`和`ResultWrapper`则是对`struts.xml`配置信息的抽象,它们有助于简化和优化Struts2应用的配置管理。通过使用这些包装类,我们可以...

    DOM、JDOM、DOM4J解析XML实例

    使用DOM4J解析XML的基本步骤如下: 1. **创建SAXReader对象**:首先创建一个`SAXReader`实例。 ```java SAXReader reader = new SAXReader(); ``` 2. **构建Document对象**:使用`SAXReader`解析XML文件并...

    DOM4J解析XML示例及API文档

    `SAXReader`用于解析XML,而`XMLWriter`则用于将DOM4J对象写入XML文件。 **读取XML**:使用`SAXReader`,你可以读取XML文件并将其转换为DOM4J的`Document`对象。例如: ```java SAXReader reader = new SAXReader()...

    dom4j-1.6.1.jar.zip

    标题"dom4j-1.6.1.jar.zip"指的是一个包含dom4j库的特定版本,即1.6.1版本的归档文件,该文件被压缩为ZIP格式。DOM4J是一个Java库,主要用于处理XML文档,提供了丰富的API来操作XML内容。 描述...

    PB 解析XML (代码案例)

    4. **解析XML**:一旦XML文档加载成功,可以使用解析器的方法如`GetFirstChild`, `GetNextSibling`, `GetName`, `GetValue`等来遍历和提取XML节点信息。 5. **处理XML数据**:根据业务需求,将解析出的数据存储到...

    dom4j 2.1.1

    XML(eXtensible Markup Language)作为一种结构化数据格式,在网络应用、配置文件、数据交换等方面广泛应用,DOM4J作为其解析工具,为开发者提供了便利。 DOM4J的主要特点包括: 1. 易于使用:DOM4J的API设计直观...

    Android Dom解析XML

    在使用DOM解析XML后,我们可能需要将解析到的数据绑定到UI组件上。例如,假设我们在XML中解析出一个字符串列表,可以这样绑定到ListView: ```java // 假设listItems是解析出来的列表 @BindListView(R.id.your_list...

    dom4j和源文件.rar

    1. 解析XML:DOM4J通过`DocumentBuilder`类解析XML文件,生成`Document`对象,可以使用`read(File file)`或`read(URL url)`方法实现。例如: ```java Document document = DocumentHelper.parseText("&lt;root&gt;&lt;element...

Global site tag (gtag.js) - Google Analytics