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

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

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

    HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

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

      BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks


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

    代碼如下,用的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();
       // 循環遍歷根元素里面的所有學生元素
      for (Iterator i = studentsInfo.elementIterator("學生"); i.hasNext();)   {
       Element student = (Element) i.next();
       // 輸出“編號”元素標簽的內容
       System.out.println(student.elementTextTrim("編號"));
       System.out.println(student.elementTextTrim("姓名"));
       System.out.println(student.elementTextTrim("年齡"));
       // 如果當前學生項里面的編號是“002”的話,就把姓名標簽的內容更改為“002孫宇”
       if (student.elementTextTrim("編號").equals("002")) {
        student.selectSingleNode("姓名").setText("002孫宇");
       }
      }
      // 直接輸出班級元素標簽的內容
      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();// 關閉輸出流
     }
    }

    <二>.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();
      // 設置設置名稱空間敏感性選項,關掉確認選項
      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("學生信息")) {
       System.out.println("開始讀學生信息...");
       this.studentsInfo.setNodeName("學生信息");
       tempNode = this.studentsInfo;
      } else if (name.equals("學生") || 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("學生") || name.equals("班級")) {
       this.childNode = null;
      }  
     }

    }



    </script>

    posted on 2007-08-26 17:26 helloworld2008 閱讀(402) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 精品久久久久久亚洲| 亚洲今日精彩视频| 久久精品国产亚洲7777| 亚洲精品国产综合久久久久紧| 又大又硬又粗又黄的视频免费看| 日韩中文无码有码免费视频| 亚洲色大成网站www尤物| 天天干在线免费视频| 久久久久久亚洲精品无码| 免费一级毛片在线观看| 亚洲精品日韩专区silk| 日本zzzzwww大片免费| 亚洲午夜爱爱香蕉片| 国产精品亚洲精品| 国产在线国偷精品产拍免费| 久久久青草青青国产亚洲免观| xxxxxx日本处大片免费看| 在线观看视频免费国语| 国产精品亚洲一区二区无码| 18禁美女黄网站色大片免费观看 | 久久久久国产免费| 亚洲欧洲精品久久| 黄色毛片免费观看| 永久亚洲成a人片777777| 在线观看的免费网站无遮挡 | 亚洲国产精品国自产拍电影| 久草视频在线免费| 国产精品无码亚洲一区二区三区| 亚洲AV无码不卡在线观看下载| 中文字幕乱码免费看电影| 亚洲国产美女在线观看| 日本午夜免费福利视频| 中文成人久久久久影院免费观看| 亚洲人成7777影视在线观看| 免费在线观看中文字幕| 无码专区AAAAAA免费视频| 亚洲AV无码专区在线厂| 亚洲电影中文字幕| 免费A级毛片无码久久版| 无码免费一区二区三区免费播放| 亚洲综合激情五月丁香六月|