<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     //構(gòu)建器初始化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>結(jié)束后,將之前的名稱和值一一對應(yīng)保存在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 用來存放標(biāo)簽值
     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聯(lián)系起來,開始解析
    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 閱讀(8650) 評論(5)  編輯  收藏 所屬分類: JAVAXML


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

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

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊

    JAVA網(wǎng)站

    關(guān)注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 914554
    • 排名 - 40

    最新評論

    主站蜘蛛池模板: 亚洲人成电影网站色| 成人免费看片又大又黄| 久久精品亚洲日本波多野结衣| 亚洲综合色自拍一区| 大陆一级毛片免费视频观看i| 亚洲欧洲免费视频| 不卡视频免费在线观看| 色噜噜的亚洲男人的天堂| 亚洲av永久综合在线观看尤物| 亚洲AV午夜成人影院老师机影院| 亚洲国产精品一区二区第一页免| 色www永久免费视频| 欧美在线看片A免费观看| 亚洲欧洲免费视频| 免费一级不卡毛片| 国产高潮久久免费观看| 国产精品观看在线亚洲人成网| 亚洲中文字幕一区精品自拍| 亚洲第一网站免费视频| 久久久久亚洲AV片无码下载蜜桃| 亚洲精品无码不卡在线播HE| 亚洲一区二区三区在线播放| 免费人成网站7777视频| 国产一级大片免费看| 国产在线19禁免费观看| 免费观看黄网站在线播放| 97视频免费在线| 97在线观免费视频观看| 一二三四在线播放免费观看中文版视频| 日韩精品人妻系列无码专区免费 | selaoban在线视频免费精品| 亚洲aⅴ天堂av天堂无码麻豆| 亚洲国产精品无码久久九九大片 | 激情小说亚洲色图| 国产精品久久久久久亚洲影视| 中文字幕精品三区无码亚洲| 亚洲欧美日韩中文字幕一区二区三区 | 色拍自拍亚洲综合图区| 内射少妇36P亚洲区| 亚洲视频一区在线| 亚洲av永久综合在线观看尤物|