無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          日歷

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          我參與的團隊

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 358371
          • 排名 - 155

          現在應用中,有很多方法來解析xml,多少DOM才是JDK解析xml的根本,這個是我從網上摘的,不錯。

          package com.Gavin.xml;

          //文件類
          import java.io.File;
          import java.io.FileNotFoundException;

          //文件輸出類
          import java.io.FileOutputStream;
          import java.io.IOException;

          //負責解析的類
          import javax.xml.parsers.DocumentBuilder;
          import javax.xml.parsers.DocumentBuilderFactory;
          import javax.xml.parsers.ParserConfigurationException;

          //映射類
          import javax.xml.transform.Transformer;
          import javax.xml.transform.TransformerConfigurationException;
          import javax.xml.transform.TransformerException;
          import javax.xml.transform.TransformerFactory;

          //xml映射輸入和輸出類
          import javax.xml.transform.dom.DOMSource;
          import javax.xml.transform.stream.StreamResult;

          //節點類
          import org.w3c.dom.Comment;
          import org.w3c.dom.Document;
          import org.w3c.dom.Element;
          import org.w3c.dom.Node;
          import org.w3c.dom.NodeList;

          public class CreateXmlContent {
              
          public static void main(String args[]) {
                  
          try {
                      
          // 構造的原始數據對象
                      String train[] = "T1次""K185次""Z17次" };
                      String type[] 
          = "特快""普快""直達" };
                      String startTime[] 
          = "15:45""11:47""18:10" };

                      
          // 解析器工廠類
                      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

                      
          // 解析器
                      DocumentBuilder builder = factory.newDocumentBuilder();

                      
          // 操作的Document對象
                      Document document = builder.newDocument();

                      
          // 設置XML的版本
                      document.setXmlVersion("1.0");

                      
          // 添加注釋
                      Comment xmlComment = document.createComment("本文檔中內容主要用于測試!");

                      
          // 將注釋添加到xml中
                      document.appendChild(xmlComment);

                      
          // 設置根節點名稱
                      Element traintimelist = document.createElement("火車時刻表");

                      
          // 把節點添加到根節點
                      document.appendChild(traintimelist);

                      
          for (int k = 1; k <= train.length; k++{
                          traintimelist.appendChild(document.createElement(
          "車次"));
                      }


                      NodeList nodeList 
          = document.getElementsByTagName("車次");
                      
          int size = nodeList.getLength();
                      
          for (int k = 0; k < size; k++{
                          Node node 
          = nodeList.item(k);
                          
          if (node.getNodeType() == Node.ELEMENT_NODE) {
                              Element elementNode 
          = (Element) node;
                              elementNode.setAttribute(
          "類別", type[k]);
                              elementNode.appendChild(document.createElement(
          "名字"));
                              elementNode.appendChild(document.createElement(
          "開車時間"));

                          }

                      }


                      nodeList 
          = document.getElementsByTagName("名字");
                      size 
          = nodeList.getLength();
                      
          for (int k = 0; k < size; k++{
                          Node node 
          = nodeList.item(k);
                          
          if (node.getNodeType() == Node.ELEMENT_NODE) {
                              Element elementNode 
          = (Element) node;
                              elementNode.appendChild(document.createTextNode(train[k]));

                          }

                      }


                      nodeList 
          = document.getElementsByTagName("開車時間");
                      size 
          = nodeList.getLength();
                      
          for (int k = 0; k < size; k++{
                          Node node 
          = nodeList.item(k);
                          
          if (node.getNodeType() == Node.ELEMENT_NODE) {
                              Element elementNode 
          = (Element) node;
                              elementNode.appendChild(document
                                      .createTextNode(startTime[k]));

                          }

                      }

                      
          // 開始把Document映射到文件
                      TransformerFactory transFactory = TransformerFactory.newInstance();
                      Transformer transformer 
          = transFactory.newTransformer();
                      
          // 設置輸出結果
                      DOMSource domSource = new DOMSource(document);
                      
          // 生成xml文件
                      File file = new File("北京到長沙火車時刻表.xml");

                      
          // 判斷是否存在,如果不存在,則創建
                      if (!file.exists()) {
                          file.createNewFile();
                      }

                      
          // 文件輸出流
                      FileOutputStream out = new FileOutputStream(file);
                      
          // 設置輸入源
                      StreamResult xmlResult = new StreamResult(out);
                      
          // 輸出xml文件
                      transformer.transform(domSource, xmlResult);
                      
          // 測試文件輸出的路徑
                      System.out.println(file.getAbsolutePath());
                  }
           catch (ParserConfigurationException e) {
                      e.printStackTrace();
                  }
           catch (TransformerConfigurationException e) {
                      e.printStackTrace();
                  }
           catch (FileNotFoundException e) {
                      e.printStackTrace();
                  }
           catch (TransformerException e) {
                      e.printStackTrace();
                  }
           catch (IOException e) {
                      e.printStackTrace();

                  }
           finally {

                  }


              }

          }


          xml:
           <?xml version="1.0" encoding="UTF-8" ?> 
          <!-- 本文檔中內容主要用于測試!
            
          --> 
          <火車時刻表>
          <車次 類別="特快">
            
          <名字>T1次</名字> 
            
          <開車時間>15:45</開車時間> 
            
          </車次>
          <車次 類別="普快">
            
          <名字>K185次</名字> 
            
          <開車時間>11:47</開車時間> 
            
          </車次>
          <車次 類別="直達">
            
          <名字>Z17次</名字> 
            
          <開車時間>18:10</開車時間> 
            
          </車次>
            
          </火車時刻表>

          評論

          # re: Dom 生成xml --http://www.w3school.com.cn/xmldom/xmldom_reference.asp (dom手冊)  回復  更多評論   

          2012-11-16 07:53 by W3School
          http://www.w3school.org.cn/xmldom/xmldom_reference.asp
          主站蜘蛛池模板: 金溪县| 新巴尔虎右旗| 福鼎市| 恩施市| 昆山市| 民权县| 昌都县| 武邑县| 平罗县| 龙川县| 沁源县| 防城港市| 左权县| 来凤县| 通江县| 札达县| 台东市| 苏尼特右旗| 京山县| 东源县| 万宁市| 吉安县| 陵水| 肃北| 红原县| 枣庄市| 介休市| 张家界市| 文登市| 张家川| 全州县| 靖州| 巫山县| 天气| 南乐县| 高台县| 余姚市| 崇阳县| 兰坪| 房产| 嵊州市|