Android--<String>XX</String>类型的XML解析

XML特殊结构解析
本文介绍了一种特殊情况下的XML解析方法,即如何解析不包含标准根元素及子元素的字符串型XML数据。通过使用HttpURLConnection获取数据,并利用XmlPullParser进行逐行解析。

转载请注明出处:http://blog.youkuaiyun.com/skyunicorn/article/details/51003286,谢谢


有时候我们遇到<string xmlns="http://tempuri.org/">坑你,就是坑你</string>这种情况怎么办?

按照我们上次讲的PULL解析,对这个完全无效啊,这个哪有上次我们说的那些根元素节点,子元素节点,属性之类的东西?

别急,下面给出解析方法:

                HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
                con.setRequestMethod("GET");   //设置连接为GET
                con.setConnectTimeout(5000);  //连接超时的时间
             
                int i = con.getResponseCode();  //获取连接状态
                if (i == 200) {  //状态码为200时连接成功
                    InputStream is = con.getInputStream();
                    parser.setInput(is, "UTF-8");  //将输入流置为UTF-8格式
                    int eventType = parser.getEventType();

                    //解析XML
                    while (eventType != XmlPullParser.END_DOCUMENT) {
                        switch (eventType) {
                            case XmlPullParser.START_DOCUMENT:  //文档开始事件,可以进行数据的初始化处理
                                break;

                            case XmlPullParser.START_TAG:  //开始元素事件
                                String name = parser.getName();
                                if (name.equalsIgnoreCase("string")) {
                                    str = parser.nextText();
                                }
                                break;
                            case XmlPullParser.END_TAG:  //结束元素事件
                                break;
                        }
                        eventType = parser.next();
                    }
                    is.close();


这样就可以了取出来数据了,用Log.i(TAG,str);就可以查看取出的数据。

安装配置:frameworks/base/core/res/res/values/config <!-- Whether to only install system packages on a user if they're allowlisted for that user type. These are flags and can be freely combined. 0 - disable allowlist (install all system packages; no logging) 1 - enforce (only install system packages if they are allowlisted) 2 - log (log non-allowlisted packages) 4 - any package not mentioned in the allowlist file is implicitly allowlisted on all users 8 - same as 4, but just for the SYSTEM user 16 - ignore OTAs (don't install system packages during OTAs) Common scenarios: - to enable feature (fully enforced) for a complete allowlist: 1 - to enable feature for an incomplete allowlist (so use implicit allowlist mode): 5 - to enable feature but implicitly allowlist for SYSTEM user to ease local development: 9 - to disable feature completely if it had never been enabled: 16 - to henceforth disable feature and try to undo its previous effects: 0 Note: This list must be kept current with PACKAGE_WHITELIST_MODE_PROP in frameworks/base/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java --> <integer name="config_userTypePackageWhitelistMode">13</integer> <!-- 1+4+8 --> 默认安装的系统进程 //frameworks/base/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java ArrayMap<String, Long> determineWhitelistedPackagesForUserTypes(SystemConfig sysConfig) { //安装白名单 final ArrayMap<String, Set<String>> whitelist = sysConfig.getAndClearPackageToUserTypeWhitelist(); //安装黑名单 final ArrayMap<String, Set<String>> blacklist = sysConfig.getAndClearPackageToUserTypeBlacklist(); ... } 相关配置文件:xx/preinstalled-packages-xxx.xml <config> <!-- Settings (Settings app) --> <install-in-user-type package="com.android.settings"> <install-in user-type="SYSTEM" /> <install-in user-type="FULL" /> <install-in user-type="PROFILE" /> <do-not-install-in user-type="android.os.usertype.profile.CLONE" /> </install-in-user-type> </config>分析给出的内容
06-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值