java读取xml文件

来源:互联网 发布:python使用c数据结构 编辑:程序博客网 时间:2024/05/21 11:26

 /**
  * @description 读取xml文档模板
  * @param xmlUrl
  */
 public void readTemplate() {
  //ExcelModel model = ExcelModel.getInstance();
  model = ExcelModel.getInstance();
  // TODO Auto-generated method stub
  //获得一个XML文件的解析器
  javax.xml.parsers.DocumentBuilderFactory dbf;
  javax.xml.parsers.DocumentBuilder db;
  org.w3c.dom.Document document;
  try {
   dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance();
   //解析XML文件生成DOM文档的接口类,以便访问DOM
   db = dbf.newDocumentBuilder();
   //设定解析参数
   dbf.setIgnoringElementContentWhitespace(true);
   String realUrl=URLDecoder.decode(this.getClass().getClassLoader().getResource("").getFile(), "UTF-8");
   realUrl = new File(realUrl).getParent();
   document = db.parse(new File(this.getClass().getClassLoader().getResource("").toURI().getPath()
     +"com/hse/excel/template/template.xml"));
   NodeList list = document.getElementsByTagName("head");
   NodeList listC = document.getElementsByTagName("columns");
   
   for(int i = 0,il=list.getLength(); i < il; i++){
    Element element = (Element)list.item(i);
    NodeList headColumns = element.getElementsByTagName("headColumn");
    List<ExcelNode> headNode = new LinkedList <ExcelNode>();
    for(int n=0, nl=headColumns.getLength(); n < nl; n++)
    {
     Element attrs = (Element)headColumns.item(n);
     String columnLabel = attrs.getElementsByTagName("columnLabel").item(0).getTextContent();
     String columnSpan = attrs.getElementsByTagName("columnSpan").item(0).getTextContent();
     String alarmMsg = attrs.getElementsByTagName("alarmMsg").item(0).getTextContent();
     ExcelNode node = new ExcelNode();
     node.setColumnLabel(columnLabel);
     node.setColumnSpan(columnSpan);
     node.setAlarmMsg(alarmMsg);
     headNode.add(node);
     //System.out.println("columnLabel  :" + columnLabel);
     //System.out.println("columnSpan  :" + columnSpan);
     //System.out.println("\n\n\n");
    }
    model.addHeads(headNode, i);
   }
   
   for(int i = 0,il=listC.getLength(); i < il; i++){
    Element element = (Element)listC.item(i);
    NodeList lColumns = element.getElementsByTagName("column");
    List<ExcelNode> columns = new LinkedList <ExcelNode>();
    for(int n=0, nl=lColumns.getLength(); n < nl; n++)
    {
     Element attrs = (Element)lColumns.item(n);
     String columnName = attrs.getElementsByTagName("columnName").item(0).getTextContent();
     String columnLabel = attrs.getElementsByTagName("columnLabel").item(0).getTextContent();
     String columnType = attrs.getElementsByTagName("columnType").item(0).getTextContent();
     String isValidate = attrs.getElementsByTagName("isValidate").item(0).getTextContent();
     String pattern = attrs.getElementsByTagName("pattern").item(0).getTextContent();
     String alarmMsg = attrs.getElementsByTagName("alarmMsg").item(0).getTextContent();
     
     ExcelNode node = new ExcelNode();
     node.setColumnName(columnName);
     node.setColumnLabel(columnLabel);
     node.setColumnType(columnType);
     node.setIsValidate(isValidate);
     node.setPattern(pattern);
     node.setAlarmMsg(alarmMsg);
     columns.add(node);
     System.out.print("columnName  :" + columnName+"\t");
     System.out.print("columnLabel  :" + columnLabel+"\t");
     System.out.println("columnType  :" + columnType);
     System.out.print("isValidate  :" + isValidate+"\t");
     System.out.print("pattern  :" + pattern+"\t");
     System.out.print("alarmMsg  :" + alarmMsg+"\t");
     System.out.println("\n\n");
    }
    model.setColumns(columns);
   }
   
   
   //查某一个表的主键列名
   //SELECT COLUMN_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'S_THREESAMETIME'
   //AND CONSTRAINT_NAME LIKE '%PK%';
   
   //遍历XML文档
   //walkNode(document.getDocumentElement());
   
   /**
    //获得根节点
    Element element=document.getDocumentElement();
    //获得根节点的子节点列表
    NodeList nodes=element.getChildNodes();
    */

  } catch (SAXException se) {
   //解析过程错误
   Exception e = se;
   if (se.getException() != null)
    e = se.getException();
   e.printStackTrace();
  } catch (IOException ie) {
   //文件处理错误
   ie.printStackTrace();
  } catch (Exception pe) {
   //解析器设定错误
   pe.printStackTrace();
  }finally{
   db=null;dbf=null;
  }
 }

原创粉丝点击