<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在线播放| 免费看无码自慰一区二区| 91成人在线免费观看| a级片免费在线播放| 日韩精品无码免费视频| 亚洲AV成人一区二区三区观看| 亚洲狠狠综合久久| 亚洲精品你懂的在线观看| 狠狠亚洲狠狠欧洲2019| 免费a级黄色毛片| 永久免费看bbb| 永久免费AV无码网站在线观看| 国产在线观看麻豆91精品免费| 人人揉揉香蕉大免费不卡| 免费一区二区三区| 毛片在线全部免费观看| 91av视频免费在线观看| 5g影院5g天天爽永久免费影院| 亚洲毛片免费观看| 最近高清国语中文在线观看免费| 妻子5免费完整高清电视| 午夜免费福利在线观看| 免费看国产一级片| 国产亚洲AV手机在线观看| 久久这里只精品国产免费10| 亚洲日本一区二区三区在线不卡| sihu国产精品永久免费| 午夜免费福利在线观看| 亚洲精品GV天堂无码男同| 99xxoo视频在线永久免费观看| 亚洲高清无码在线观看| 亚洲精品无码久久久久久| 91免费播放人人爽人人快乐| 亚洲av鲁丝一区二区三区| 国产精品无码亚洲精品2021| 国产精品玖玖美女张开腿让男人桶爽免费看| 成人无遮挡毛片免费看| 一个人免费观看视频在线中文 |