`
yuyeyi
  • 浏览: 36585 次
  • 性别: 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解析

    有时候解析xml的时候,如dom4j这样开源的包是不能用的,,替换dom4j中的xml解析,java源代码

    DOM4J解析XML

    前面介绍了 Core 组件、Bean 组件和 Context 组件的结构与相互关系,下面这里从使用者角度看一下他们是如何运行的,以及我们如何让 Spring 完成各种功能,Spring 到底能有那些功能,这些功能是如何得来的,下面介绍...

    解析xml组件

    用于解析xml文件的组件,分别dom4j.jar和jaxen.jar............................................................................................................................................................

    XML解析器:Node.js XML DOM,解析器和Stringifier

    使用非常宽容的XML解析器解析XML,HTML等,并将其转换为DOM。 这三个组件作为各自的模块彼此分开。 零件 尺寸 解析器 4.7 KB 串词器 1.3 KB DOM 3.1 KB 安装 npm install xml-parse 要求 const xml = require ...

    VC使用Cmarkup生成、解析xml资料

    UNICODE(统一字符编码标准):对于WindowsNT和WindowsCE平台能够被编译成UNICODE,在WindowsNT UNICODE下,XML文档是流到UTF-8文件中,但是内部用宽字符。 UTF-8:对于UTF-8文件,这接受和返回UTF-8字符串(确保_...

    JOX实现XML和JavaBean相互转化

    XML和JavaBean相互转化是一个非常有用的工作,用来读写xml的组件很多,比如dom4j, sax, JDom,Digester等,但是很多组件用起来很麻烦,今天给大家推荐一个超级简单的组件JOX, JOX是一套用户XML document和Java ...

    XMl3种解析方法

    使用了DOM,PULL以及SAX三种解析方式

    详解Android之解析XML文件三种方式(DOM,PULL,SAX)

    1.xml文件代码 &lt;?xml version=1.0 encoding=UTF-8 ?&gt; &lt;&#37;@ page language=java contentType=text/xml; charset=UTF-8 pageEncoding=UTF-8%&gt; &lt;&#37;@ taglib uri=...

    angular-xml2js:用于将文本转换为 xml 并将 xml 转换为 javascript 对象的角度过滤器。 它使用 DOMParser 或 Microsoft 的 ActiveX DOM 解析器并且没有依赖项但有角度

    它使用浏览器的 DOMParser(在 IE 的情况下使用 XMLDOM ActiveX 组件)。 没有像 X2JS 这样的依赖。 安装 bower install --save angular-xml2js XML JSON 示例 对于以下 XML 文档 &lt;?xml version="1.0"?&gt; ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

    疯狂XML讲义

    其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery可以查询XML文档中的数据,就像使用SQL查询关系数据库的数据一样...

    疯狂xml讲义

    其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery可以查询XML文档中的数据,就像使用SQL查询关系数据库的数据一样...

    Android编程解析XML方法详解(SAX,DOM与PULL)

    主要介绍了Android编程解析XML方法,结合实例形式详细分析了Android解析XML文件的常用方法与相关实现技巧,需要的朋友可以参考下

    基于JAVA技术的网页内容智能抓取

    完全基于java的技术 XML解析,HTML解析,开源组件...DOM4J:解析XML文件 jericho-html-2.5:解析HTML文件 commons-httpclient:读取WEB页面内容工具 其他必须的辅助引用包括: commons-codec commons-logging jaxen

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

    疯狂XML讲义(Web Service).pdf

    其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery可以查询XML文档中的数据,就像使用SQL查询关系数据库的数据一样...

    疯狂XML讲义.part3.rar

    其中的DOM、SAX、JAXP、dom4j和JDOM都以结构化的方式来创建、解析XML文档,从而可以将XML文档作为数据传输工具,而XQuery则是一种新规范,通过XQuery可以查询XML文档中的数据,就像使用SQL查询关系数据库的数据一样...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

Global site tag (gtag.js) - Google Analytics