<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://www.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
    主站蜘蛛池模板: 卡1卡2卡3卡4卡5免费视频| 91成年人免费视频| 久久久亚洲精品蜜桃臀| 青娱乐在线免费观看视频| 免费精品国产自产拍观看| 亚洲AV香蕉一区区二区三区| 青青青青青青久久久免费观看| 亚洲国产成人久久综合| 色吊丝永久在线观看最新免费| 亚洲成AV人片高潮喷水| 波多野结衣中文一区二区免费| 春意影院午夜爽爽爽免费| 久久亚洲欧洲国产综合| 18禁超污无遮挡无码免费网站| 久久亚洲私人国产精品| 久久www免费人成看片| 亚洲乱码国产乱码精华| 少妇亚洲免费精品| a视频在线观看免费| 亚洲黄色在线网站| 国产精品国产免费无码专区不卡| 免费看又黄又爽又猛的视频软件| 日韩亚洲变态另类中文| 一区二区在线免费观看| 亚洲天堂男人影院| 亚洲精品高清在线| 久久久久久AV无码免费网站下载| 亚洲一区二区三区播放在线 | 青青草国产免费国产是公开| 亚洲综合色区在线观看| 久久永久免费人妻精品下载| 亚洲一区在线视频观看| 亚洲精品第一国产综合精品99| 久久久久久AV无码免费网站| 亚洲日韩国产一区二区三区在线| 亚洲av无码国产精品色在线看不卡 | 亚洲国产美国国产综合一区二区 | 亚洲色欲色欲www| 亚洲精品成人在线| 2021国产精品成人免费视频| 免费一级做a爰片久久毛片潮|