91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-07-27 10:59:44 來源:億速云 閱讀:124 作者:小新 欄目:編程語言

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

XML概述以及Pull解析詳解

 ONE Goal ,ONE Passion !

做Android開發最多的都是json.而且解析xml都用Xstream,慢慢地xml的手動解析都快忘記了.一般最常見的還是基于dom的demo4j , 還有基于sax的pull解析.還有一種吧忘記了

概述:

XML是什么 ?
eXtensible Markup Language(可擴展的標記語言);

XML常見作用:

1,用作配置文件
2,數據傳輸時數據格式
3,Android中資源文件

XML的基本語法:

1.聲明  必須寫在第一行

<?xml version="1.0" encoding="utf-8"?>

    version : xml的版本號.目前只有1,0版本

    encoding: 編碼格式

2,只能有一個根標簽

3,每個標簽都必須閉合

4,不能交叉嵌套

形如:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <color name="colorPrimary">#3F51B5</color>
     </resources>

5,CDATA區

    <![CDATA[

    將有特殊符號文本顯示
    if( 3< 5 ){
       }

    ]]>

如在文檔中使用”<”,”>”等特殊符號時要使用CDATA區,否者不能正常編譯.

Pull編寫XML文件.

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

        // 1.xml的聲明---------- <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
        ser.startDocument("utf-8", true);        
        // 2. 開始標簽  ---------- <書庫>
        ser.startTag(null, "書庫");        
        for (
        int i = 0; i < 2; i++) {        
        //3.開始標簽 ------------- <書>
            ser.startTag(null, "書");        
            // 4. 開始標簽------------ <書名>
            ser.startTag(null, "書名");        
            //4.1為書名標簽設置 屬性--------- <書名 id = "1001">   
            ser.attribute(null, "id", "1001");        
            //4.2標簽設置  文本------------  <書名 id = "1001" >百年孤獨    
            ser.text("百年孤獨");        
            // 5,結束標簽 ------------  </書名>
            ser.endTag(null, "書名");        
            // 6.結束標簽------------</書>   
            ser.endTag(null, "書");
         

        }        
        // 7.根標簽 結束-----------</書庫>
        ser.endTag(null, "書庫");
        ser.endDocument();

    }
    }

生成的b.xml文件為:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <書庫>
        <書>
            <書名 id="1001">百年孤獨</書名>
        </書>
        <書>
            <書名 id="1002">百年孤獨</書名>
        </書>
    </書庫>

Pull解析XMl:

 public class XmlParserDemo {

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

                    // 當標簽是對象時. 創建 對象
                    book = new Book();

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

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

                }                
                break;            
                case XmlPullParser.END_TAG: // 結束標簽
                // 標簽為對象的結束標簽時,將對象存儲到集合中 </書>
                if (parser.getName().equalsIgnoreCase("書")) { 
                // -------</書>
                                                            
                                                            
                    // 注意:當時</書名>結束標簽時不用做處理
                    list.add(book);
                }                
                break;

            }

            parser.next();

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

    }
    }

注意事項:

1,使用kxml2-2.3.0.jar和xmlpull_1_1_3_4c.jar兩個jar進行解析.

如果沒有build.path會報下面的錯誤:

 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()方法的返回值–標簽名

形如:

      //返回null    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>

    //返回    
    書名,null,書名    <書名 id="1001">百年孤獨</書名>

    //返回 
   書名,null,書名    <書名 id="1002"></書名>

當parser解析時.parser也會移動到標簽題文本(text)中.而text沒有標簽名所以為null.

以上是“XML概述以及Pull解析的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

康马县| 丰城市| 思茅市| 六盘水市| 高邮市| 盐边县| 宣威市| 蒲城县| 兴山县| 太和县| 临沂市| 平定县| 白河县| 凉城县| 遵义县| 历史| 方城县| 泽库县| 辽阳县| 陆丰市| 龙胜| 奉化市| 平顶山市| 河北省| 连江县| 浦东新区| 英山县| 望谟县| 凉山| 南投市| 谢通门县| 元朗区| 梁平县| 衡阳市| 岢岚县| 吉木萨尔县| 宜都市| 黄大仙区| 榆林市| 定陶县| 邵武市|