常用的Tag值

本文详细介绍了银行卡支付系统中各类数据元素及其含义,包括应用标识符(AID)、应用主账号(PAN)、交易货币代码等关键信息,为理解银行卡支付流程提供基础。

Tag
 含义
 
42
 行业识别码(IIN)
 
4F
 应用标识符(AID)
 
50
 应用标签
 
57
 磁条2等效数据
 
5A
 应用主账号(PAN)
 
5D
 目录定义文件(DDF)名称
 
5F20
 持卡人姓名
 
5F24
 应用失效日期
 
5F25
 应用生效日期
 
5F28
 发卡行国家代码
 
5F2A
 交易货币代码
 
5F2D
 首选语言
 
5F30
 服务码
 
5F34
 应用主帐号序列号
 
5F50
 发卡行URL
 
5F53
 国际银行账号(IBAN)
 
5F54
 银行标识符代码(BIC)
 
5F55
 发卡行国家代码(alpha2格式)
 
5F56
 发卡行国家代码(alpha3格式)
 
61
 应用模板
 
6F
 文件控制信息(FCI)模板
 
70
 响应报文数据
 
77
 响应报文模板格式2
 
72
 发卡行脚本模板2
 
73
 目录自定义模板
 
80
 响应报文模板格式
 
82
 应用交互特征(AIP)
 
84
 专用文件(DF)名称
 
86
 发卡行脚本命令
 
87
 应用优先级权指示符
 
88
 短文件标识符(SFI)
 
8A
 授权响应码
 
8C
 卡片风险管理数据对象列表1
 
8D
 卡片风险管理数据对象列表2
 
8E
 持卡人验证方法(CVM)列表
 
8F
 CA公钥索引(PKI)
 
90
 发卡行公钥证书
 
91
 发卡行认证数据
 
92
 发卡行公钥余数
 
93
 签名的静态应用数据(SAD)
 
94
 应用文件定位器(AFL)
 
97
 交易证书数据对象列表(TDOL)

 
9A
 交易日期
 
9C
 交易类型
 
9D
 目录数据文件(DDF)名称
 
9F02
 授权金额
 
9F03
 其它金额
 
9F05
 应用自定义数据
 
9F06
 应用标识符(AID)-终端
 
9F07
 应用用途控制(AUC)
 
9F08
 卡片应用版本号
 
9F09
 终端应用版本号
 
9F0B
 持卡人姓名扩展
 
9F0D
 发卡行行为代码(IAC)-缺省
 
9F0E
 发卡行行为代码(IAC)-拒绝
 
9F0F
 发卡行行为代码(IAC)-联机
 
9F10
 发卡行应用数据
 
9F11
 发卡行代码表索引
 
9F12
 应用首选名称
 
9F13
 上次联机应用交易计数器(ATC)寄存器
 
9F14
 连续脱机交易下限
 
9F17
 PIN尝试计数器
 
9F1A
 终端国家代码
 
9F1B
 终端最低限额
 
9F1F
 磁条1自定义数据
 
9F21
 交易时间
 
9F23
 连续脱机交易上限
 
9F26
 应用密文(AC)
 
9F27
 密文信息数据(CID)
 
9F32
 发卡行公钥指数
 
9F36
 应用交易计数器(ATC)
 
9F38
 处理选项数据对象列表PDOL
 
9F42
 应用货币代码
 
9F44
 应用货币指数
 
9F45
 数据认证码
 
9F46
 IC卡公钥证书
 
9F47
 IC卡公钥指数
 
9F48
 IC卡公钥余数
 
9F49
 动态数据认证数据对象列表(DDOL)
 
9F4A
 静态数据认证标签列表
 
9F4B
 签名的动态应用数据
 
9F4C
 IC动态数
 
9F4D
 日志入口
 
9F4E
 商户名称
 
9F4F
 日志格式
 
9F50
 发卡行URL
 
9F51
 应用货币代码
 
9F52
 应用缺省行为(ADA)
 
9F53
 连续脱机交易限制数(国际-货币)
 
9F54
 累计脱机交易金额限制数
 
9F56
 发卡行认证指示位
 
9F57
 发卡行国家代码
 
9F58
 连续脱机交易下限
 
9F59
 连续脱机交易上限
 
9F5A
 发卡行URL2
 
9F5C
 累计脱机交易金额上限
 
9F61
 持卡人证件号
 
9F62
 持卡人证件类型
 
9F63
 卡产品标识信息
 
9F6D
 电子现金重置阈值(EC Reset Threshold)
 
9F72
 连续脱机交易限制数(国际-国家)
 
9F73
 货币转换因子
 
9F74
 电子现金发卡行授权码(EC Issuer Authorization Code)
 
9F75
 累计脱机交易金额限制数(双货币)
 
9F76
 第2应用货币代码
 
9F77
 电子现金余额上限(EC Balance Limit)
 
9F78
 电子现金单笔交易限额(EC Single Transaction Limit)
 
9F79
 电子现金余额(EC Balance)
 
9F7A
 电子现金终端支持指示器(EC Terminal Support Indicator)
 
9F7B
 电子现金终端交易限额(EC Terminal Transaction Limit)
 
A5
 文件控制信息(FCI)专有模板
 
BF0C
 发卡行自定义数据FCI
 

<think> 我们正在使用XmlPullParser解析XML,现在需要获取某个标签的属性。 根据XmlPullParser的工作机制,当解析器位于一个START_TAG事件时,我们可以通过getAttribute系列方法获取属性。 步骤: 1. 使用parser.next()或parser.nextTag()将解析器推进到目标标签的START_TAG事件。 2. 在START_TAG事件中,通过getAttributeCount()获取属性数量,通过getAttributeName(int index)获取属性名,通过getAttributeValue(int index)获取属性。 3. 或者,如果知道属性名,可以直接通过getAttributeValue(String namespace, String name)获取属性(如果不需要命名空间,第一个参数可以为null)。 示例XML片段: <person id="123" name="John" age="30">...</person> 解析代码示例: 假设我们当前解析到了person标签的START_TAG事件。 方法1:遍历所有属性 int attrCount = parser.getAttributeCount(); for (int i=0; i<attrCount; i++) { String attrName = parser.getAttributeName(i); String attrValue = parser.getAttributeValue(i); // 处理属性 } 方法2:直接按属性名获取 String idValue = parser.getAttributeValue(null, "id"); // 不需要命名空间,所以第一个参数为null String nameValue = parser.getAttributeValue(null, "name"); String ageValue = parser.getAttributeValue(null, "age"); 注意:如果属性不存在,则返回null。 完整示例:解析一个包含属性的标签 假设我们有如下XML: <bookstore> <book id="101" category="android"> <title>Android Programming</title> <author>John Doe</author> </book> </bookstore> 我们想要获取book标签的id和category属性。 代码步骤: 1. 推进解析器直到遇到book标签的START_TAG事件。 2. 在START_TAG事件中获取属性。 代码示例: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(false); // 不需要命名空间支持 XmlPullParser parser = factory.newPullParser(); parser.setInput(new StringReader(xmlString)); // 假设xmlString是上面的XML字符串 int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.START_TAG) { String tagName = parser.getName(); if (tagName.equals("book")) { // 获取属性 String id = parser.getAttributeValue(null, "id"); String category = parser.getAttributeValue(null, "category"); // 处理属性 Log.d("XML", "Book id: " + id + ", category: " + category); } } eventType = parser.next(); } ``` 注意事项: - 如果XML中使用命名空间,需要设置setNamespaceAware(true),并在获取属性时指定命名空间,或者使用getAttributeValue(String namespace, String name)方法。 - 在解析过程中,只有处于START_TAG事件时才能获取属性。 因此,获取标签属性的关键是定位到目标标签的START_TAG事件,然后使用getAttributeValue方法。 引用说明:以上示例参考了Android官方文档关于XmlPullParser的用法[^1]。 </think>在 Android 中使用 XmlPullParser 获取标签属性的方法如下: ### 核心方法 当解析器位于 `START_TAG` 事件时,可通过以下方法获取属性: ```java // 通过索引获取属性 String attrValue = parser.getAttributeValue(int index); // 通过属性名获取属性 String attrValue = parser.getAttributeValue(String namespace, String name); ``` ### 完整解析流程示例 ```java public void parseXml(InputStream in) throws XmlPullParserException, IOException { XmlPullParser parser = XmlFactory.newPullParser(); parser.setInput(in, "UTF-8"); int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { switch (eventType) { case XmlPullParser.START_TAG: handleStartTag(parser); break; } eventType = parser.next(); } } private void handleStartTag(XmlPullParser parser) { String tagName = parser.getName(); // 示例:解析<person id="1001" name="John"> if ("person".equals(tagName)) { // 方法1:直接按属性名获取 String id = parser.getAttributeValue(null, "id"); // 不需要命名空间时设为null String name = parser.getAttributeValue(null, "name"); // 方法2:遍历所有属性 for (int i = 0; i < parser.getAttributeCount(); i++) { String attrName = parser.getAttributeName(i); String attrValue = parser.getAttributeValue(i); Log.d("XML", attrName + "=" + attrValue); } // 创建对象存储数据 Person person = new Person(); person.setId(Integer.parseInt(id)); person.setName(name); } } ``` ### 关键点说明 1. **获取属性的最佳时机** 只能在 `START_TAG` 事件中获取属性(`END_TAG` 中无法获取) 2. **命名空间处理** ```java // 带命名空间的属性获取 String value = parser.getAttributeValue("http://example.com/ns", "attrName"); ``` 3. **常用方法** | 方法 | 描述 | |------|------| | `getAttributeCount()` | 返回属性数量 | | `getAttributeName(int index)` | 获取指定索引的属性名 | | `getAttributeValue(int index)` | 获取指定索引的属性 | | `getAttributeValue(String ns, String name)` | 按命名空间和属性名获取 | 4. **类型转换** 所有属性都以字符串形式返回,需手动转换类型: ```java int id = Integer.parseInt(parser.getAttributeValue(null, "id")); boolean isActive = Boolean.parseBoolean(parser.getAttributeValue(null, "active")); ``` ### 实际应用场景 解析以下 XML: ```xml <bookstore> <book id="101" category="android" price="29.99"> <title>Android编程指南</title> </book> </bookstore> ``` 解析代码: ```java if ("book".equals(parser.getName())) { String id = parser.getAttributeValue(null, "id"); String category = parser.getAttributeValue(null, "category"); String price = parser.getAttributeValue(null, "price"); Book book = new Book(); book.setId(id); book.setCategory(category); book.setPrice(Float.parseFloat(price)); } ``` ### 注意事项 1. **空处理** 属性不存在时返回 `null`,建议使用: ```java String value = parser.getAttributeValue(null, "attr") ?? ""; ``` 2. **性能优化** 对大文件使用 `parser.nextTag()` 跳过文本节点: ```java while ((eventType = parser.nextTag()) != XmlPullParser.END_DOCUMENT) { // 仅处理标签事件 } ``` 3. **错误处理** 添加异常捕获: ```java try { String value = parser.getAttributeValue(null, "attr"); } catch (Exception e) { Log.e("XML", "属性解析错误", e); } ``` > XmlPullParser 是 Android 推荐的轻量级 XML 解析方案,特别适合在移动设备上处理结构化数据[^1]。通过精确控制解析流程,可以高效提取 XML 中的属性[^2]。 ```mermaid graph TD A[开始解析] --> B{遇到START_TAG?} B -->|是| C[获取标签名] C --> D[检查目标标签] D -->|匹配| E[获取属性] E --> F[创建数据对象] F --> G[存储属性] G --> H[继续解析] B -->|否| H H --> I{结束文档?} I -->|是| J[结束] I -->|否| B ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值