ホームページ > バックエンド開発 > XML/RSS チュートリアル > アンドロイドはXmlPullParserを使用してXMLファイルを解析します

アンドロイドはXmlPullParserを使用してXMLファイルを解析します

黄舟
リリース: 2017-02-20 14:57:02
オリジナル
1846 人が閲覧しました

次の XML を解析します:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

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

<rss><sid>77f265bb46de068e78f35afbadec62af</sid><count>3</count><control>0</control>

<mblog><uid>1195224593</uid><favid>3436952795</favid><mblogid>5xtaJR</mblogid><mblogidnum>3436952795</mblogidnum>

<mblogtype>0</mblogtype><mlevel>0</mlevel><feedid>5xtaJR</feedid><nick>马艳丽</nick>

<portrait>

<vip>1</vip>

<vipsubtype>0</vipsubtype>

<member_type>13</member_type>

<remark></remark>

<level>2</level>

<rtnum>11</rtnum>

<commentnum>25</commentnum>

<attitudenum>0</attitudenum>

<attitudeid>0</attitudeid>

<attitudes_status>0</attitudes_status>

<attitudes_count>0</attitudes_count>

<mblogtypename></mblogtypename>

<visible><type>0</type><list_id>0</list_id></visible>

<content>婚礼在北海美丽的北海公园举行…好美好浪漫的地方… </content>

<pic>

<source>彩信</source>

</mblog>

</rss>

ログイン後にコピー


次のように解析を記述します:



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

public static Object[] getMBlogList(String content) throws HttpException {

    try {

        Object[] result = new Object[3];

        List<MBlog> lst = new ArrayList<MBlog>();

        result[1] = lst;

 

        final XmlPullParser parser = Xml.newPullParser();

        parser.setInput(new StringReader(content));

        int type;

        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {

            switch (type) {

                <strong>case XmlPullParser.START_TAG:这里开始读取最外层的标签属性</strong>

                    if (parser.getName().equals("count")) {

                        try {

                            result[0] = new Integer(parseText(parser));

                        } catch (Exception e) {

                            result[0] = 0;

                        }

                    } else if (parser.getName().equals("mblog")) {

                        MBlog mb = parseMBlog(parser);

                        if (mb != null)

                            lst.add(mb);

                    } else if (parser.getName().equals("relation")) {

                        result[2] = new Integer(parseText(parser));

                    }

                    break;

                default:

                    break;

            }

        }

        return result;

    } catch (NumberFormatException e) {

        throw new HttpException(e);

    } catch (XmlPullParserException e) {

        throw new HttpException(e);

    } catch (IOException e) {

        throw new HttpException(e);

    } catch (ParseException e) {

        throw new HttpException(e);

    }

}

 

private static String parseText(XmlPullParser parser) throws ParseException {

    try {

        int type = parser.next();

        if (type == XmlPullParser.TEXT) {

            return replaceEntityRef(parser.getText().trim());

        } else {

            return "";

        }

    } catch (Exception e) {

        throw new ParseException(PARSE_ERROR, e);

    }

}

 

public static MBlog parseMBlog(XmlPullParser parser) throws ParseException {

    <strong>MBlog b = new MBlog();//这里开始读取每个MBlog对象</strong>

    try {

        int type;

        LOOP: {

            while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {

                switch (type) {

                    case XmlPullParser.START_TAG:

                        if (parser.getName().equals("uid")) {

                            b.uid = parseText(parser);

                            if (b.uid.equals(""))

                                return null;

                        } else if (parser.getName().equals("favid")) {

                            b.favid = parseText(parser);

                        } else if (parser.getName().equals("mblogid")) {

                            b.mblogid = parseText(parser);

                        } else if (parser.getName().equals("nick")) {

                            String s = parseText(parser);

                            b.nick = s;

                        } else if (parser.getName().equals("portrait")) {

                            b.portrait = parseText(parser);

                        } else if (parser.getName().equals("vip")) {

                            b.vip = (parseText(parser).equals("1")) ? true : false;

                        } else if (parser.getName().equals("content")) {

                            b.content = parseText(parser);

                        } else if (parser.getName().equals("rtrootuid")) {

                            b.rtrootuid = parseText(parser);

                        } else if (parser.getName().equals("rtrootid")) {

                            b.rtrootid = parseText(parser);

                        } else if (parser.getName().equals("rtrootnick")) {

                            String s = parseText(parser);

                            b.rtrootnick = s;

                        } else if (parser.getName().equals("rtrootvip")) {

                            b.rtrootvip = (parseText(parser).equals("1")) ? true : false;

                        } else if (parser.getName().equals("rtreason")) {

                            b.rtreason = parseText(parser);

                        } else if (parser.getName().equals("rtnum")) {

                            b.rtnum = Integer.parseInt(parseText(parser));

                        } else if (parser.getName().equals("commentnum")) {

                            b.commentnum = Integer.parseInt(parseText(parser));

                        } else if (parser.getName().equals("time")) {

                            b.time = new Date(Long.parseLong(parseText(parser)) * 1000);

                        } else if (parser.getName().equals("pic")) {

                            b.pic = parseText(parser);

                        } else if (parser.getName().equals("source")) {

                            b.src = parseText(parser);

                        } else if (parser.getName().equals("longitude")) {

                            b.longitude = parseText(parser);

                        } else if (parser.getName().equals("latitude")) {

                            b.latitude = parseText(parser);

                        }

                        break;

                    case XmlPullParser.END_TAG:

                        if (parser.getName().equals("mblog")) {

                            break LOOP;

                        }

                        break;

                    default:

                        break;

                }

            }

        }

        return b;

    } catch (Exception e) {

        throw new ParseException(PARSE_ERROR, e);

    }

}  

ログイン後にコピー


アクティビティで次のように呼び出します:



rrreええ

上記はAndroidがXmlPullParserを使用する方法ですXML ファイルの内容を解析します。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート