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

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

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

    對兩種情況,這個文件不需要修改:
     1 import org.xml.sax.Attributes;
     2 import org.xml.sax.helpers.DefaultHandler;
     3 import org.xml.sax.SAXException;
     4 import java.util.Properties;
     5 
     6 public class ConfigParser extends DefaultHandler
     7 {
     8     ////定義一個Properties 用來存放 dbhost dbuser dbpassword的值
     9     private Properties props;
    10     
    11     private String currentSet;
    12     private String currentName;
    13     private StringBuffer currentValue = new StringBuffer();
    14     //構建器初始化props
    15     public ConfigParser()
    16     {
    17         this.props = new Properties();
    18     }
    19     public Properties getProps()
    20     {
    21         return this.props;
    22     }
    23     
    24     
    25     //定義開始解析元素的方法. 這里是將<xxx>中的名稱xxx提取出來.
    26     public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
    27     {
    28         currentValue.delete(0, currentValue.length());
    29         this.currentName =qName;
    30     }
    31     //這里是將<xxx></xxx>之間的值加入到currentValue
    32     public void characters(char[] ch, int start, int length) throws SAXException
    33     {
    34         currentValue.append(ch, start, length);
    35     }
    36     //在遇到</xxx>結束后,將之前的名稱和值一一對應保存在props中
    37     public void endElement(String uri, String localName, String qName) throws SAXException
    38     {
    39         props.put(qName.toLowerCase(), currentValue.toString().trim());
    40 //System.out.println(qName.toLowerCase() + " " + currentValue.toString().trim());
    41     }
    42 }
    43 

    這個文件中注釋 與注釋之間的是對不同情況的對比:
     1 import java.net.URL;
     2 import java.util.Properties;
     3 import javax.xml.parsers.SAXParser;
     4 import javax.xml.parsers.SAXParserFactory;
     5 
     6 public class ParseXML
     7 {
     8     //定義一個Properties 用來存放標簽值
     9     private Properties props;
    10     public Properties getProps()
    11     {
    12         return this.props;
    13     }
    14     public void parse(String filename) throws Exception
    15     {
    16         //將解析器對象化
    17       try
    18         {
    19           ConfigParser handler = new ConfigParser();
    20         //獲取SAX工廠對象
    21         SAXParserFactory factory = SAXParserFactory.newInstance();
    22         factory.setNamespaceAware(false);
    23         factory.setValidating(false);
    24         //獲取SAX解析
    25         SAXParser parser = factory.newSAXParser();
    26      
    27 /////////////////////////////////////////////////////////////////////////////
    28 //對字符串解析:
    29 //            InputSource is = new InputSource ();
    30 //            StringReader xmlStr = new StringReader (filename);
    31 //            is.setCharacterStream (xmlStr);
    32 //            parser.parse (is,handler);
    33  ////////////////////////////////////////////////////////////////////////////    
    34             
    35 ////////////////////////////////////////////////////////////////////////////
    36 //  對文件解析:
    37         URL confURL = getClass().getResource(filename);
    38         if(confURL == null) System.out.println("error");
    39         
    40             //將解析器和解析對象xml聯系起來,開始解析
    41             parser.parse(confURL.toString(), handler);
    42 /////////////////////////////////////////////////////////////////////////
    43           props = handler.getProps();
    44         }
    45      catch(Exception e)
    46      {
    47          System.out.println (e.toString ());
    48      }
    49     }
    50 }
    51 
    52 


    測試程序:
     1 import java.util.*;
     2 
     3 public class Main
     4 {
     5     static ParseXML px = new ParseXML ();
     6     public static void main (String[] args)
     7     {
     8         //load_properties ();   //解析xml文件
     9         load_properStr();  //解析字符串用這個方法
    10         String  issuccessful = (String) getObject ("result");
    11         String  objRequestID =  (String) getObject ("msg");
    12         System.out.println ("issuccessful ::"+issuccessful);
    13         System.out.println ("objRequestID ::"+objRequestID);
    14         
    15     }
    16     
    17     public static void load_properStr ()
    18     {
    19         
    20         String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
    21                 "<response>"+
    22                 "<result>0</result>"+
    23                 "<msg>47F42A2D578</msg>"+
    24                 "</response>";
    25         try
    26         {
    27             px.parse (str);
    28         }
    29         catch (Exception ex)
    30         {
    31             ex.printStackTrace ();
    32         }
    33         
    34     }
    35     public static void  load_properties ()
    36     {
    37         try
    38         {
    39             px.parse ("/properties.xml");
    40         }
    41         catch (Exception ex)
    42         {
    43             ex.printStackTrace ();
    44         }
    45     }
    46     public static Object getObject (String keyname)
    47     {
    48         return px.getProps ().getProperty (keyname);
    49     }
    50 }
    51 




    posted on 2007-02-07 10:53 -274°C 閱讀(8648) 評論(5)  編輯  收藏 所屬分類: JAVAXML


    FeedBack:
    # re: 解析XML字符串與xml文件
    2007-02-07 15:22 | BeanSoft
    感謝分享, 共同進步!  回復  更多評論
      
    # 感謝!
    2008-09-19 21:32 | 398589389
    謝謝你,好東西啊  回復  更多評論
      
    # re: 解析XML字符串與xml文件
    2009-09-11 12:57 | 香蕉果果
    想問一下,如果想取標簽的屬性值又該怎么取呢,比如
    <result status="0" message="消息發送成功,發送了1條消息"><serial_id count="1"><id value="13333333" sp_name="" /></serial_id></result>

    比如我要取里面status的值  回復  更多評論
      
    # re: 解析XML字符串與xml文件
    2010-08-27 18:04 | jiakly
    謝謝!  回復  更多評論
      
    # re: 解析XML字符串與xml文件
    2010-08-27 18:13 | jiakly
    謝謝你提供的代碼
    怎么只能讀一個節點下的啊,都給一樣的節點就只讀最后一個.
    例如:
    <?xml version='1.0' encoding='GB2312'?>
    <response>
    <vo> <a>1</a> </vo>
    <vo><a>2</a> </vo>
    </response>  回復  更多評論
      

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網站

    關注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914374
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 亚洲AV无码乱码在线观看代蜜桃| 国产成人精品日本亚洲语音| 久久亚洲AV成人无码电影| 亚洲欧洲日韩国产综合在线二区| 亚洲精品午夜在线观看| 亚洲人成无码网站在线观看| 国产午夜无码片免费| jjizz全部免费看片| 成在线人永久免费视频播放| 国产中文在线亚洲精品官网| 亚洲的天堂av无码| 亚洲AV无码国产精品色| 亚洲精品综合在线影院| 亚洲精品国产成人| 亚洲国产精品久久久久婷婷老年| 亚洲熟女精品中文字幕| 日韩免费无码一区二区三区| 亚洲福利精品电影在线观看| 亚洲最大的成网4438| 免费人成在线观看播放a| 毛片免费全部播放无码| 亚洲一区二区三区偷拍女厕 | 亚洲一区二区三区精品视频 | 亚洲日日做天天做日日谢| 99免费在线视频| 无码不卡亚洲成?人片| 亚洲一区二区三区在线| 午夜不卡久久精品无码免费| JLZZJLZZ亚洲乱熟无码| 亚洲最大成人网色香蕉| 91免费在线播放| 久久亚洲国产精品| aa级毛片毛片免费观看久| 永久免费无码网站在线观看| 精品日韩99亚洲的在线发布| 久久久久成人片免费观看蜜芽 | 亚洲av成人一区二区三区| 99精品一区二区免费视频| 亚洲国产另类久久久精品小说 | 在线精品亚洲一区二区| 美女视频黄免费亚洲|