用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(); 
    } 

你可能感兴趣的:(sql,xml)