Java操作XML編程實(shí)例解析(3)_Xml教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:利用XSLT來換XML的根
      寫程序需要換XML的根,感覺很不便,于是寫了一個(gè)函數(shù),大致思路及實(shí)現(xiàn)如下: 首先覺得利用XSLT還能過濾一些東西,然后再發(fā)送回客戶端,所以決定采用XSLT 然后就是嘗試寫一個(gè)換根的XSL,如下

       private void readXMLFile(String inFile) throws Exception {
      //為解析XML作準(zhǔn)備
      //創(chuàng)建DocumentBuilderFactory實(shí)例,指定DocumentBuilder
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = null;
      try {
      db = dbf.newDocumentBuilder();
      } catch (ParserConfigurationException pce) {
      System.err.println(pce);
      //出異常時(shí)輸出異常信息,然后退出,下同
      System.exit(1);
      }
      Document doc = null;
      try {
      doc = db.parse(inFile);
      } catch (DOMException dom) {
      System.err.println(dom.getMessage());
      System.exit(1);
      } catch (IOException ioe) {
      System.err.println(ioe);
      System.exit(1);
      }
      //下面是解析XML的全過程,
      //比較簡單,先取根元素"學(xué)生花名冊"
      Element root = doc.getDocumentElement();
      //取"學(xué)生"元素列表
      NodeList students = root.getElementsByTagName("學(xué)生");
      for (int i = 0; i < students.getLength(); i ) {
      //依次取每個(gè)"學(xué)生"元素
      Element student = (Element) students.item(i);
      //創(chuàng)建一個(gè)學(xué)生的Bean實(shí)例
      StudentBean studentBean = new StudentBean();
      //取學(xué)生的性別屬性
      studentBean.setSex(student.getAttribute("性別"));
      //取"姓名"元素,下面類同
      NodeList names = student.getElementsByTagName("姓名");
      if (names.getLength() == 1) {
      Element e = (Element) names.item(0);
      Text t = (Text) e.getFirstChild();
      studentBean.setName(t.getNodeValue());
      }NodeList ages = student.getElementsByTagName("年齡");
      if (ages.getLength() == 1) {
      Element e = (Element) ages.item(0);
      Text t = (Text) e.getFirstChild();
      studentBean.setAge(Integer.parseInt(t.getNodeValue()));
      }NodeList phones = student.getElementsByTagName("電話");
      if (phones.getLength() == 1) {
      Element e = (Element) phones.item(0);
      Text t = (Text) e.getFirstChild();
      studentBean.setPhone(t.getNodeValue());
      }student_Vector.add(studentBean);
      }
      }private void writeXMLFile(String outFile) throws Exception {
      //為解析XML作準(zhǔn)備,
      //創(chuàng)建DocumentBuilderFactory實(shí)例,指定DocumentBuilder
      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      DocumentBuilder db = null;
      try {
      db = dbf.newDocumentBuilder();
      } catch (ParserConfigurationException pce) {
      System.err.println(pce);
      System.exit(1);
      }Document doc = null;
      doc = db.newDocument();//下面是建立XML文檔內(nèi)容的過程,
      /先建立根元素"學(xué)生花名冊"
      Element root = doc.createElement("學(xué)生花名冊");
      //根元素添加上文檔
      doc.appendChild(root);//取學(xué)生信息的Bean列表
      for (int i = 0; i < student_Vector.size(); i ) {
      //依次取每個(gè)學(xué)生的信息
      StudentBean studentBean = (StudentBean) student_Vector.get(i);
      //建立"學(xué)生"元素,添加到根元素
      Element student = doc.createElement("學(xué)生");
      student.setAttribute("性別", studentBean.getSex());
      root.appendChild(student);
      //建立"姓名"元素,添加到學(xué)生下面,下同
      Element name = doc.createElement("姓名");
      student.appendChild(name);
      Text tName = doc.createTextNode(studentBean.getName());
      name.appendChild(tName);Element age = doc.createElement("年齡");
      student.appendChild(age);
      Text tAge = doc.createTextNode(String.valueOf(studentBean.getAge()));
      age.appendChild(tAge);Element phone = doc.createElement("電話");
      student.appendChild(phone);
      Text tPhone = doc.createTextNode(studentBean.getPhone());
      phone.appendChild(tPhone);
      }
      //把XML文檔輸出到指定的文件
      FileOutputStream outStream = new FileOutputStream(outFile);
      OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
      ((XmlDocument) doc).write(outWriter, "GB2312");
      outWriter.close();
      outStream.close();
      }


      最后加入測試主函數(shù),如下:

       public static void main(String[] args) throws Exception {
      //建立測試實(shí)例
      XMLTest xmlTest = new XMLTest();
      //初始化向量列表
      xmlTest.student_Vector = new Vector();System.out.println("開始讀Input.xml文件");
      xmlTest.readXMLFile("Input.xml");System.out.println("讀入完畢,開始寫Output.xml文件");
      xmlTest.writeXMLFile("Output.xml");
      System.out.println("寫入完成");
      }

      好了,保存好StudentBean和XMLTest,把Input.xml保存到工作目錄下。可以看到"寫入完成"了。

      分享:讀取XML為行記錄
      以下為引用的內(nèi)容: 1 declare @x xml 2 set @x='<book genre="security" publicationdate="2002" ISBN="0-7356-1588-2&

      共3頁上一頁123下一頁
      來源:模板無憂//所屬分類:Xml教程/更新時(shí)間:2008-08-22
      相關(guān)Xml教程