<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    HelloWorld 善戰(zhàn)者,求之于勢,不責(zé)于人;故能擇人而任勢。

    知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

      BlogJava :: 首頁 ::  :: 聯(lián)系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks


    源代碼 http://www.tkk7.com/Files/zhaochengming/dom4j.rar
    <一>.dom方式
    個(gè)人感覺如果是讀取修改配置文件等對xml文件比較小的情況下,建議使用dom的方式,如果是用xml來傳輸數(shù)據(jù),主要是讀取的作用,建議使用sax
    我們先定義一個(gè)xml文件,后面的sax方式也用這個(gè)方式,
    person.xml
    <?xml version="1.0" encoding="utf-8"?><學(xué)生信息>
      <學(xué)生>
        <編號>B0071423</編號> 
        <姓名>周星馳</姓名> 
        <年齡>23</年齡>
      </學(xué)生> 
      <學(xué)生>
        <編號 id="100">B0071424</編號> 
        <姓名>Tom.Bluser</姓名> 
        <年齡>24</年齡>
      </學(xué)生> 
      <班級 id="00222" name="class">搞笑班</班級>
    </學(xué)生信息>

    代碼如下,用的dom4j解析器
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Iterator;

    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;


    public class ReadXml {
     public static void main(String args[]) throws Exception{
      SAXReader reader = new SAXReader();
      // 聲明文檔對象
      Document doc = null;
      // 讀取XML文檔
      doc = reader.read(new File("./config/person.xml"));
      // 聲明跟元素
      Element studentsInfo = doc.getRootElement();
       // 循環(huán)遍歷根元素里面的所有學(xué)生元素
      for (Iterator i = studentsInfo.elementIterator("學(xué)生"); i.hasNext();)   {
       Element student = (Element) i.next();
       // 輸出“編號”元素標(biāo)簽的內(nèi)容
       System.out.println(student.elementTextTrim("編號"));
       System.out.println(student.elementTextTrim("姓名"));
       System.out.println(student.elementTextTrim("年齡"));
       // 如果當(dāng)前學(xué)生項(xiàng)里面的編號是“002”的話,就把姓名標(biāo)簽的內(nèi)容更改為“002孫宇”
       if (student.elementTextTrim("編號").equals("002")) {
        student.selectSingleNode("姓名").setText("002孫宇");
       }
      }
      // 直接輸出班級元素標(biāo)簽的內(nèi)容
      System.out.println(studentsInfo.selectSingleNode("班級").getText());
      studentsInfo.selectSingleNode("班級").setText("真搞笑班");
      XMLWriter writer = null;
      OutputFormat format = OutputFormat.createPrettyPrint();
      // 格式編碼為“utf-8”
      format.setEncoding("utf-8");
      writer = new XMLWriter(new FileOutputStream(new File("./config/person.xml")), format);
      writer.write(doc);// 寫XML文檔
      writer.close();// 關(guān)閉輸出流
     }
    }

    <二>.sax方式
    代碼如下
    import java.io.File;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;

    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;

    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;

    public class TestSAXParsing {
     public static void main(String args[]) throws Exception, SAXException {
      SAXParserFactory factory = SAXParserFactory.newInstance();
      // 設(shè)置設(shè)置名稱空間敏感性選項(xiàng),關(guān)掉確認(rèn)選項(xiàng)
      factory.setValidating(false);
      factory.setNamespaceAware(true);
      SAXParser parser = factory.newSAXParser();
      MyHandler handler = new MyHandler();
      parser.parse(new File("./config/person.xml"),handler);
      handler.studentsInfo.toString();
     }
    }

    class XmlNode {
     private String nodeName;
     private List<XmlNode> childs = new ArrayList<XmlNode>();
     private HashMap<String,String> attributes = new HashMap<String,String>();
     public String getNodeName() {
      return nodeName;
     }
     public void addChild(XmlNode node) {
      this.childs.add(node);
     }
     public void setNodeName(String nodeName) {
      this.nodeName = nodeName;
     }
     public void addAttribute(String name, String value) {
      this.attributes.put(name, value);
     }
     public String getAttribute(String name) {
      return this.attributes.get(name);
     }
     public List<XmlNode> getChilds() {
      return childs;
     }
     public void setChilds(List<XmlNode> childs) {
      this.childs = childs;
     }
     public HashMap<String, String> getAttributes() {
      return attributes;
     }
     public void setAttributes(HashMap<String, String> attributes) {
      this.attributes = attributes;
     }
     public String toString() {
      System.out.println(this.nodeName);
      Iterator<String> key = this.attributes.keySet().iterator();
      while (key.hasNext()) {
       String str = key.next();
       System.out.println("Attribuet["+str+","+this.attributes.get(str)+"]");
      }
      for (int i = 0; i < this.childs.size(); i++) {
       XmlNode node = this.childs.get(i);
       node.toString();
      }
      return super.toString();
     }
    }

    class MyHandler extends DefaultHandler {
     public XmlNode studentsInfo = new XmlNode();
     private XmlNode childNode = null;
     private XmlNode temp = null;
     
     @Override
     public void startElement(String uri, String localName, String name,
       org.xml.sax.Attributes attributes) throws SAXException {
      XmlNode tempNode = null;
      if(name.equals("學(xué)生信息")) {
       System.out.println("開始讀學(xué)生信息...");
       this.studentsInfo.setNodeName("學(xué)生信息");
       tempNode = this.studentsInfo;
      } else if (name.equals("學(xué)生") || name.equals("班級")) {
       childNode = new XmlNode();
       childNode.setNodeName("【"+name+"】");
       this.studentsInfo.addChild(childNode);
       tempNode = this.childNode;
      } else if (name.equals("編號") || name.equals("姓名") || name.equals("年齡")) {
       tempNode = new XmlNode();
       tempNode.setNodeName(name);
       childNode.addChild(tempNode);
      } else {
       return;
      }
      for (int i = 0; i < attributes.getLength(); i++) {
       tempNode.addAttribute(attributes.getQName(i), attributes.getValue(i));
      }
      this.temp = tempNode;
     }

     public void characters(char[] ch, int start, int length)
       throws SAXException {
      String str = new String(ch,start,length);
      if (str.trim().equals("")) {
       return;
      }
      temp.addAttribute("text", str);
     }

     @Override
     public void endElement(String namespaceURI, String localName, String name)
       throws SAXException {
      if (name.equals("學(xué)生") || name.equals("班級")) {
       this.childNode = null;
      }  
     }

    }



    </script>

    posted on 2007-08-26 17:26 helloworld2008 閱讀(401) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 成年女人色毛片免费看| 中文亚洲AV片在线观看不卡| 黄色大片免费网站| 国产亚洲成av人片在线观看| 99久久人妻精品免费一区| 亚洲中文无码mv| 亚洲中文字幕无码一区二区三区| 精品国产无限资源免费观看| 免费人成网上在线观看| 亚洲色偷偷av男人的天堂| 免费看小12萝裸体视频国产| 可以免费观看的国产视频| 国产精品亚洲一区二区三区久久| 亚洲第一精品福利| 免费国产美女爽到喷出水来视频| 99re免费99re在线视频手机版| 猫咪免费观看人成网站在线| 亚洲成人网在线观看| 久久久亚洲精品蜜桃臀| 成人无遮挡毛片免费看| 久草福利资源网站免费| 特级毛片A级毛片100免费播放| 亚洲精品在线视频观看| 亚洲精品tv久久久久久久久| 日本高清色本免费现在观看| 67194成手机免费观看| 一级黄色免费大片| 亚洲成a人片在线观看天堂无码 | 久久精品熟女亚洲av麻豆| 亚洲AV乱码久久精品蜜桃| 亚洲成?Ⅴ人在线观看无码| 很黄很色很刺激的视频免费| 在线看片免费人成视频播| 黄页网址大全免费观看12网站| 亚洲一区免费在线观看| 亚洲av鲁丝一区二区三区| 亚洲人成网站在线播放vr| 亚洲成人影院在线观看| 日韩特黄特色大片免费视频| 毛片在线免费视频| 久草在视频免费福利|