真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

XML概述以及Pull解析的示例分析

小編給大家分享一下XML概述以及Pull解析的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的漠河網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

XML概述以及Pull解析詳解

 ONE Goal ,ONE Passion !

做Android開(kāi)發(fā)最多的都是json.而且解析xml都用Xstream,慢慢地xml的手動(dòng)解析都快忘記了.一般最常見(jiàn)的還是基于dom的demo4j , 還有基于sax的pull解析.還有一種吧忘記了

概述:

XML是什么 ?
eXtensible Markup Language(可擴(kuò)展的標(biāo)記語(yǔ)言);

XML常見(jiàn)作用:

1,用作配置文件
2,數(shù)據(jù)傳輸時(shí)數(shù)據(jù)格式
3,Android中資源文件

XML的基本語(yǔ)法:

1.聲明  必須寫(xiě)在第一行



    version : xml的版本號(hào).目前只有1,0版本

    encoding: 編碼格式

2,只能有一個(gè)根標(biāo)簽

3,每個(gè)標(biāo)簽都必須閉合

4,不能交叉嵌套

形如:

    
    
        #3F51B5
     

5,CDATA區(qū)

    

如在文檔中使用”<”,”>”等特殊符號(hào)時(shí)要使用CDATA區(qū),否者不能正常編譯.

Pull編寫(xiě)XML文件.

public class WriteXml {    
public static void main(String[] args) throws Exception {        
// 創(chuàng)建xml解析工廠(chǎng)
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();        
        // 通過(guò)工廠(chǎng)創(chuàng)建序列化器(xml生成器)
        XmlSerializer ser = factory.newSerializer();        
        // 為序列化器指定輸出流(將xml文件寫(xiě)到指定的某個(gè)文件中)
        ser.setOutput(new FileOutputStream("src/b.xml"), "utf-8");        
        //  開(kāi)始寫(xiě)xml文件

        // 1.xml的聲明---------- 
        ser.startDocument("utf-8", true);        
        // 2. 開(kāi)始標(biāo)簽  ---------- <書(shū)庫(kù)>
        ser.startTag(null, "書(shū)庫(kù)");        
        for (
        int i = 0; i < 2; i++) {        
        //3.開(kāi)始標(biāo)簽 ------------- <書(shū)>
            ser.startTag(null, "書(shū)");        
            // 4. 開(kāi)始標(biāo)簽------------ <書(shū)名>
            ser.startTag(null, "書(shū)名");        
            //4.1為書(shū)名標(biāo)簽設(shè)置 屬性--------- <書(shū)名 id = "1001">   
            ser.attribute(null, "id", "1001");        
            //4.2標(biāo)簽設(shè)置  文本------------  <書(shū)名 id = "1001" >百年孤獨(dú)    
            ser.text("百年孤獨(dú)");        
            // 5,結(jié)束標(biāo)簽 ------------  
            ser.endTag(null, "書(shū)名");        
            // 6.結(jié)束標(biāo)簽------------   
            ser.endTag(null, "書(shū)");
         

        }        
        // 7.根標(biāo)簽 結(jié)束-----------
        ser.endTag(null, "書(shū)庫(kù)");
        ser.endDocument();

    }
    }

生成的b.xml文件為:


    <書(shū)庫(kù)>
        <書(shū)>
            <書(shū)名 id="1001">百年孤獨(dú)
        
        <書(shū)>
            <書(shū)名 id="1002">百年孤獨(dú)
        
    

Pull解析XMl:

 public class XmlParserDemo {

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {        
    // 創(chuàng)建pull解析器工廠(chǎng)對(duì)象
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();        
        // 創(chuàng)建解析器對(duì)象
        ArrayList list = null;
        Book book = null;        
        // 獲得解析器
        XmlPullParser parser = factory.newPullParser();        
        // 從指定文件中解析 出xml
        parser.setInput(new FileInputStream("src/b.xml"), "utf-8");        
        // 1 . 判斷是否是根標(biāo)簽的結(jié)束標(biāo)簽
        while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {            
        switch (parser.getEventType()) {            
        case XmlPullParser.START_TAG: // 開(kāi)始標(biāo)簽
                if (parser.getName().equalsIgnoreCase("書(shū)庫(kù)")) { 
                // ------------<書(shū)庫(kù)>
                    // 如果是 跟標(biāo)簽時(shí),創(chuàng)建集合存儲(chǔ) 對(duì)象
                    list = new ArrayList();
                } else if (parser.getName().equalsIgnoreCase("書(shū)")) { 
                // ----------<書(shū)>

                    // 當(dāng)標(biāo)簽是對(duì)象時(shí). 創(chuàng)建 對(duì)象
                    book = new Book();

                } else if (parser.getName().equalsIgnoreCase("書(shū)名")) {
                // ----------<書(shū)名>

                    // 獲得當(dāng)前標(biāo)簽中的 屬性以及text.并存儲(chǔ)到對(duì)象中
                    String id = parser.getAttributeValue(null, "id");
                    book.setId(id);
                    String name = parser.nextText();
                    book.setName(name);

                }                
                break;            
                case XmlPullParser.END_TAG: // 結(jié)束標(biāo)簽
                // 標(biāo)簽為對(duì)象的結(jié)束標(biāo)簽時(shí),將對(duì)象存儲(chǔ)到集合中 
                if (parser.getName().equalsIgnoreCase("書(shū)")) { 
                // -------
                                                            
                                                            
                    // 注意:當(dāng)時(shí)結(jié)束標(biāo)簽時(shí)不用做處理
                    list.add(book);
                }                
                break;

            }

            parser.next();

        }        for (int i = 0; i < list.size(); i++) {
            System.out.println("---" + list.get(i));
        }

    }
    }

注意事項(xiàng):

1,使用kxml2-2.3.0.jar和xmlpull_1_1_3_4c.jar兩個(gè)jar進(jìn)行解析.

如果沒(méi)有build.path會(huì)報(bào)下面的錯(cuò)誤:

 org.xmlpull.v1.XmlPullParserException: caused by: org.xmlpull.v1.XmlPullParserException: 
 resource not found: /META-INF/services/org.xmlpull.v1.XmlPullParserFactory make sure that parser implementing XmlPull API is available
2.parser.getName()方法的返回值–標(biāo)簽名

形如:

      //返回null    

    //返回    
    書(shū)名,null,書(shū)名    <書(shū)名 id="1001">百年孤獨(dú)

    //返回 
   書(shū)名,null,書(shū)名    <書(shū)名 id="1002">

當(dāng)parser解析時(shí).parser也會(huì)移動(dòng)到標(biāo)簽題文本(text)中.而text沒(méi)有標(biāo)簽名所以為null.

以上是“XML概述以及Pull解析的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)標(biāo)題:XML概述以及Pull解析的示例分析
當(dāng)前鏈接:http://weahome.cn/article/jsoedh.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部