Android自定义xml解析

这篇博客介绍了如何使用XML定义自定义字段,并在Java中进行解析。示例展示了XML资源配置文件的结构,以及通过XmlResourceParser解析XML内容,获取并填充到AuthInfo对象列表的过程。解析过程中涉及START_TAG、END_TAG等事件处理。
摘要由CSDN通过智能技术生成

1.xml定义,可以定义自己要的字段

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <AuthInfos>
        <AuthInfo
            PointX="100"
            PointY="100"
            Tag="el001"
            Name="el001.png"/>

        <AuthInfo
            PointX="200"
            PointY="200"
            Tag="el002"
            Name="el002.png"/>

    </AuthInfos>
</resources>

2.java代码解析


   private List<AuthInfo> getEnabels(){

         XmlResourceParser xmlParser = getResources().getXml(R.xml.elabel);
         List<AuthInfo> AuthInfos = new ArrayList<AuthInfo>();
         int eventType = 0;
         try {
             eventType = xmlParser.getEventType();
             //不是文件结尾就继续解析
             while (eventType != XmlResourceParser.END_DOCUMENT) {
                 switch (eventType) {
                //文件的内容的起始标签开始,注意这里的起始标签是elabel.xml文件
                //里面<AuthInfos>标签下面的第一个标签AuthInfo
                     case XmlResourceParser.START_TAG:
                         String tagName = xmlParser.getName();
                         if (tagName.endsWith("AuthInfo")) {
                             AuthInfo authInfo = new AuthInfo();
                             authInfo.PointX = xmlParser.getAttributeValue(null, "PointX");
                             authInfo.PointY = xmlParser.getAttributeValue(null, "PointY");
                             authInfo.Tag = xmlParser.getAttributeValue(null, "Tag");
                             authInfo.Name = xmlParser.getAttributeValue(null, "Name");
                             AuthInfos.add(authInfo) ;
                         }
                         break;
                     case XmlResourceParser.END_TAG:
                         break;
                     case XmlResourceParser.TEXT:
                         break;
                     default:
                         break;
                 }
                 try {
                     eventType= xmlParser.next() ;
                 } catch (IOException e) {
                     e.printStackTrace();
                 }
             }
         } catch (XmlPullParserException e) {
             e.printStackTrace();
         }
         xmlParser.close() ;
         return AuthInfos;
     }
    
    //定义类,解析后放入
     class AuthInfo{
        String PointX;
        String PointY;
        String Tag;
        String Name;
     }

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值