<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://m.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
    主站蜘蛛池模板: 精品一区二区三区无码免费直播| 久久亚洲中文字幕精品有坂深雪| 亚洲综合欧美色五月俺也去| 亚洲精品视频在线观看免费| 亚洲韩国在线一卡二卡| 18以下岁毛片在免费播放| 亚洲国产中文在线二区三区免 | 一级中文字幕免费乱码专区 | 真人做A免费观看| 亚洲午夜精品久久久久久app| 日本精品人妻无码免费大全| 亚洲AV无码无限在线观看不卡| 日本高清色本免费现在观看| 国产成人精品亚洲一区| 精品亚洲一区二区三区在线观看| 国产成人1024精品免费| 亚洲AV日韩AV永久无码下载| 免费看片在线观看| 99亚洲乱人伦aⅴ精品| 亚洲人成网7777777国产| 最近免费中文字幕高清大全| 亚洲色大成WWW亚洲女子| 亚洲视频人成在线播放| 久久青草免费91线频观看不卡| 亚洲国产视频网站| 国产黄色片在线免费观看| 99久久成人国产精品免费| 亚洲国产成人手机在线电影bd | 国产精品亚洲综合网站| 亚洲码国产精品高潮在线| 最近免费mv在线电影| 亚洲日韩国产欧美一区二区三区 | 亚洲成AV人片在| 无码人妻久久一区二区三区免费丨 | 亚洲精品免费在线| 国产精品冒白浆免费视频| 国产午夜无码精品免费看动漫| 一级特黄aaa大片免费看| 911精品国产亚洲日本美国韩国| 亚洲国产中文v高清在线观看| 老司机午夜精品视频在线观看免费 |