Android解析XML的三种方式

Android XML文件读取解析三种方式 XML文件读取解析 阅读详情

在Android中提供了三种解析XML的方式:DOM(Document Objrect Model),SAX(Simple API XML),以及Android推荐的Pull解析方式.

如图:


本篇博客使用的xml文件如下:(这里是获取网络XML)person.xml

<?xml version="1.0" encoding="UTF-8"?>
<persons>
  <person id="1">
	<name>zhangsan</name>
	<age>21</age>
  </person>
  <person id="2">
	<name>lisi</name>
	<age>22</age>
  </person>
  <person id="3">
	<name>wangwu</name>
	<age>222</age>
  </person>
</persons>

下面分别介绍三种解析方式。

第一种:DOM解析

DOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。
Node对象提供了一系列常量来代表结点的类型,当开发人员获得某个Node类型后,
就可以把Node节点转换成相应节点对象(Node的子类对象),以便于调用其特有的方法。
Node对象提供了相应的方法去获得它的父结点或子结点。
编程人员通过这些方法就可以读取整个XML文档的内容、或添加、修改、删除XML文档的内容.
缺点: 一次性的完全加载整个xml文件,需要消耗大量的内存。

首先先获取网络XML数据:
 class MyTask extends AsyncTask{
        @Override
        protected Object doInBackground(Object[] params) {
            //获取网络XML数据 //解析XML//展示
            //原生态底层:URLConnction
            try {
                URL url=new URL("http://192.168.1.110:8080/person.xml");
                HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                //设置请求方式
                connection.setRequestMethod("GET");
                //设置连接超时的时间(优化)
                connection.setConnectTimeout(5000);
                //结果码(状态)//成功200   失败 未修改304
                //获取结果码
                int code=connection.getResponseCode();
                if(code==200){
                    //获取服务器返回来额结果
                    InputStream is=connection.getInputStream();
                    //打印(读)
                    BufferedReader br=new BufferedReader(new InputStreamReader(is));
                    String str=null;
                    while ((str=br.readLine())!=null){
                        Log.i("test",str);
                    }
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
           return null;
        }

获取数据成功,打印信息如下:
02-16 12:43:14.602 18236-18298/com.pxd.parsexml I/test: <?xml version="1.0" encoding="UTF-8"?>
02-16 12:43:14.602 18236-18298/com.pxd.parsexml I/test: <persons>
02-16 12:43:14.603 18236-18298/com.pxd.parsexml I/test:   <person id="1">
02-16 12:43:14.604 18236-18298/com.pxd.parsexml I/test: 	<name>zhangsan</name>
02-16 12:43:14.605 18236-18298/com.pxd.parsexml I/test: 	<age>21</age>
02-16 12:43:14.606 18236-18298/com.pxd.parsexml I/test:   </person>
02-16 12:43:14.607 18236-18298/com.pxd.parsexml I/test:   <person id="2">
02-16 12:43:14.608 18236-18298/com.pxd.parsexml I/test: 	<name>lisi</name>
02-16 12:43:14.609 18236-18298/com.pxd.parsexml I/test: 	<age>22</age>
02-16 12:43:14.610 18236-18298/com.pxd.parsexml I/test:   </person>
02-16 12:43:14.611 18236-18298/com.pxd.parsexml I/test:   <person id="3">
02-16 12:43:14.612 18236-18298/com.pxd.parsexml I/test: 	<name>wangwu</name>
02-16 12:43:14.613 18236-18298/com.pxd.parsexml I/test: 	<age>222</age>
02-16 12:43:14.613 18236-18298/com.pxd.parsexml I/test:   </person>
02-16 12:43:14.615 18236-18298/com.pxd.parsexml I/test: </persons>

Dom解析代码如下:

  class MyTask extends AsyncTask{
        @Override
        protected Object doInBackground(Object[] params) {
            //获取网络XML数据
            try {
                URL url=new URL("http://192.168.1.110:8080/person.xml");
                HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                //设置请求方式
                connection.setRequestMethod("GET");
                //设置连接超时的时间(优化)
                connection.setConnectTimeout(5000);
                //结果码(状态)//成功200   失败 未修改304
                //获取结果码
                int code=connection.getResponseCode();
                if(code==200){
                    //获取服务器返回来额结果
                    InputStream is=connection.getInputStream();
                    //解析XMLDOM解析=====================================
                    DocumentBuilderFactory documentBuilderFactory=  DocumentBuilderFactory.newInstance();
                    DocumentBuilder documentBuilder= documentBuilderFactory.newDocumentBuilder();
                    Document document= documentBuilder.parse(is);
                    //获取根标签
                    Element element=document.getDocumentElement();
                    Log.i("test","根标签:"+element.getNodeName());
                   NodeList nodeList=element.getElementsByTagName("person");
                    for (int i = 0; i < nodeList.getLength(); i++) {
                        //获取单个
                      Element personElement= (Element) nodeList.item(i);
                        //获取<person>属性id的值
                       String id= personElement.getAttribute("id");
                        Log.i("test",id);
                        //获取<person>下面的子标签<name><age>的值
                        Element nameElement= (Element) personElement.getElementsByTagName("name").item(0);
                        String name= nameElement.getTextContent();
                        Element ageElement= (Element) personElement.getElementsByTagName("age").item(0);
                        String age=ageElement.getTextContent();
                        Log.i("test",name+"  "+age);
                    }
              }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }catch (SAXException e) {
                e.printStackTrace();
            }catch (ParserConfigurationException e) {
                e.printStackTrace();
            }
            return null;
        }

这里没有写展示页面,直接打印信息:



第二种SAX解析:

SAX是事件驱动型XML解析的一个标准接口不会改变 SAX的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。

Sax解析代码如下

  class MyTask extends AsyncTask{
        @Override
        protected Object doInBackground(Object[] params) {
            //获取网络XML数据
            try {
                URL url=new URL("http://192.168.1.110:8080/person.xml");
                HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                //设置请求方式
                connection.setRequestMethod("GET");
                //设置连接超时的时间(优化)
                connection.setConnectTimeout(5000);
                //结果码(状态)//成功200   失败 未修改304
                //获取结果码
                int code=connection.getResponseCode();
                if(code==200){
                    //获取服务器返回来额结果
                    InputStream is=connection.getInputStream();
                    //解析XMLSax解析=====================================
                    //(边读边解析)
                  SAXParserFactory saxParseFactory=SAXParserFactory.newInstance();
                  SAXParser saxParse= saxParseFactory.newSAXParser();
                  saxParse.parse(is,new DefaultHandler(){
                      @Override
                      public void startDocument() throws SAXException {
                          super.startDocument();
                          Log.i("test","开始文档");
                      }
                      @Override
                      public void endDocument() throws SAXException {
                          super.endDocument();
                          Log.i("test","结束文档");
                      }
                      @Override
                      public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                          super.startElement(uri, localName, qName, attributes);
                          cuurentTag=localName;
                          //获取开始标签的名字
                          if("person".equals(localName)){
                              //取属性的值
                              String id=attributes.getValue(0);
                              Log.i("test",id);
                          }
                      }
                      @Override
                      public void endElement(String uri, String localName, String qName) throws SAXException {
                          super.endElement(uri, localName, qName);
                          cuurentTag=null;
                      }
                      @Override
                      public void characters(char[] ch, int start, int length) throws SAXException {
                          super.characters(ch, start, length);
                          if("name".equals(cuurentTag)){
                                //获取<name>的值
                                String name=new String(ch,start,length);
                                Log.i("test", "   "+name);
                           }else if("age".equals(cuurentTag)){
                                //获取<name>的值
                                String age=new String(ch,start,length);
                                Log.i("test", "   "+age);
                            }
                      }
                  });
              }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } catch (SAXException e) {
                e.printStackTrace();
            }
            return null;
        }


效果图:



第三种PULL解析(类似SAX)

代码如下:

 //异步任务类AsyncTask
    class MyTask extends AsyncTask{
        @Override
        protected Object doInBackground(Object[] params) {
            //获取网络XML数据
            try {
                URL url=new URL("http://192.168.1.110:8080/person.xml");
                HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                //设置请求方式
                connection.setRequestMethod("GET");
                //设置连接超时的时间(优化)
                connection.setConnectTimeout(5000);
                //结果码(状态)//成功200   失败 未修改304
                //获取结果码
                int code=connection.getResponseCode();
                if(code==200){
                    //获取服务器返回来额结果
                    InputStream is=connection.getInputStream();
                    //使用PULL解析
                    XmlPullParser xmlPullParser= Xml.newPullParser();
                    xmlPullParser.setInput(is,"UTF-8");
                    //获取解析的标签的类型
                    int type=xmlPullParser.getEventType();
                    while(type!=XmlPullParser.END_DOCUMENT){
                        switch (type) {
                            case XmlPullParser.START_TAG:
                                //获取开始标签的名字
                                String starttgname = xmlPullParser.getName();
                                if ("person".equals(starttgname)) {
                                    //获取id的值
                                    String id = xmlPullParser.getAttributeValue(0);
                                    Log.i("test", id);
                                } else if ("name".equals(starttgname)) {
                                    String name = xmlPullParser.nextText();
                                    Log.i("test", name);
                                } else if ("age".equals(starttgname)) {
                                    String age = xmlPullParser.nextText();
                                    Log.i("test", age);
                                }
                                break;
                            case XmlPullParser.END_TAG:
                                break;
                        }//细节:
                        type=xmlPullParser.next();
                    }
              }
              } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }catch (XmlPullParserException e) {
                e.printStackTrace();
            }
            return null;
        }

打印信息如下:



Android 中 解析 XML 文件的几种方式 根据 book.xml 内容定义配套的数据类:DOM 解析:适合解析较小的 XML 文件,可以方便地访问和修改 XML 的任意部分。SAX 解析:适合解析较大的 XML 文件,内存占用低,解析速度快。Pull 解析:适合Android 环境,性能好,内存占用低,解析速度快。根据你的具体需求选择合适的解析方式。如果 XML 文件较小且需要频繁访问,DOM 解析是一个不错的选择;如果 XML 文件较大,推荐使用 SAX 或 XmlPullParser 解析。 阅读详情

相关推荐

matlab kwave模拟超声换能器学习笔记

kwave模拟超声换能器的学习笔记,从零开始造车轮

SolvingMaster的博客 3197

XML解析——Java中XML的四种解析方式

  XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。   XML的解析方式分为四种:1、DOM解析;2、SAX解析;3、JDOM解析;4、DOM4J解析。其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩...

Sa916487698的博客 2020

手把手教你用示波器测试DDR5 DRAM信号完整性(附眼图分析技巧)

本文详细介绍了如何使用示波器测试DDR5 DRAM信号完整性,包括眼图分析技巧。从DDR5的核心挑战、测试设备选型到实测工作流程,提供了全面的指导。特别强调了DFE功能验证和系统级协同测试,帮助工程师解决信号完整性问题,提升测试效率。

g2h3i4j5的博客 1152

Android 解析xml 文件

xml 文件在各种开发中都广泛应用.Android中也不例外.作为承载数据的一个重要角色.如何读写xml成为一项十分重要的技能. 在Android中,常见的xml解析器分为DOM解析器,SAX解析器,PULL解析器. 将该xml文件放置在assets目录中. <?xml version="1.0" encoding="utf-8"?> <persons> &...

xujian197的博客 5738

Unity游戏接入穿山甲广告SDK全攻略:从零到上线的避坑指南

本文为Unity开发者提供了接入穿山甲广告SDK的完整实战指南。详细解析了从账号注册、应用创建到Unity插件集成、安卓与iOS平台打包配置的全流程,并重点分享了广告加载失败、展示异常等常见问题的排查与解决方案,帮助开发者高效实现游戏广告变现。

weixin_29015899的博客 535

从数据到图片:手把手构建FMCW雷达人体行为识别数据集(行走、跌倒、喝水等6类动作)

本文详细解析了如何利用FMCW雷达构建人体行为识别数据集,涵盖行走、跌倒、喝水等6类动作。通过多普勒特征可视化、图像标准化处理和自动化流水线设计,将原始雷达信号转化为高质量时频图像数据集,为智能家居和健康监护等应用提供可靠数据支持。

weixin_30706691的博客 384

Android Xml解析

1. 什么是XML XML (Extensible markup language): XML是一种标记语言,用于存储与传输数据。是常用的数据传输方式,区分大小写,文件扩展名为.xml。XML定义了一组用于以人类可读和机器可读的格式编码文档的规则。XML的设计目标集中在Internet的简单性,通用性和可用性上。它是一种文本数据格式,并通过Unicode对不同的人类语言提供了强大的支持,被W3C所推荐。 例如: <?xml version="1.0" encoding="utf-8"?> &

jerechen的博客 3801

ConvNeXt 系列改进:引入大核注意力(LKA)替换 7×7 深度卷积,涨点 2.1%

LSKA替换7×7深度卷积,在ImageNet分类任务上实现2.1%的显著提升,参数量仅增加1M。LSKA的四层1D分解将计算复杂度从O(k²)降至O(k),21×21大核的计算量仅相当于原版7×7的1.7倍,实现了感受野与计算成本的完美平衡。部署友好度极高:LSKA模块在TensorRT FP16量化后延迟仅1.2ms,精度损失<0.1%,远优于Transformer类模型。下游任务全面领先。

ZXSXJ的博客 699

Android Xml的三种解析方式

xml文件:从网络获取,或存在本地(assets目录下); <?xml version="1.0" encoding="UTF-8"?> <Persons> <person id="1"> <name>张三</name> <sex>男</sex> <age>25</age> <path>http://192.168.

雨汨的博客 584

华为OD机试真题2025双机位A卷 C语言 实现【采购订单】

在一个采购系统中,采购申请(PR)需要经过审批后才能生成采购订单(PO)。每个PR包含商品的单价(假设相同商品的单价一定是一样的)及数量信息。系统要求对商品进行分类处理:单价高于100元的商品需要单独处理,单价低于或等于100元的相同商品可以合并到同一采购订单PO中。针对单价低于100的小额订单,如果量大可以打折购买。

MISAYAONE的博客 351

ROM和RAM在单片机程序运行理解

ROM和RAM是电子设备中两种核心存储组件,主要区别在于:ROM用于长期存储系统程序、用户文件等固定数据,断电后数据不丢失,但写入速度较慢;RAM则用于临时存储运行中的程序和数据,读写速度快但断电后数据会清空。在单片机中,ROM存储程序代码和常量,RAM存储运行时的变量和数据。两者协同工作,ROM如同"永久档案库"保存必要信息,RAM则像"临时工作台"支持高速运算,共同确保设备正常运行。

qq_37999850的博客 1620

Android 三种方式解析XML文件

我们要解析的XML文件 <?xml version="1.0" encoding="utf-8"?> <students> <student sex="女"> <name>李永进</name> <age>18</age> </student> &l...

sugar_3BigRed的博客 340

Qt Quick/QML入门到精通_专栏demo对应文章目录(目前50个左右demo/长期更新)

自定义图标下拉列表框的效果如下所示:自定义三态按钮的效果如下所示:传送门:53.qt quick-自定义三态按钮、自定义图标下拉列表框_诺谦的博客-优快云博客传送门:59.qt quick-qml调色板(颜色取色器)实现、自定义QQuickStyle样式_诺谦的博客-优快云博客63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-优快云博客_qt实现好看侧边栏。...

抵抗时间扭曲,坚持做一件有意义的事 2万+

Android解析xml的方法,Android中XML文件的三种解析方式

由于三种解析方法都实现了一个功能,就是对xml文件进行解析,所以在这里我们可以将解析方法定义为一个接口,三种解析方法都实现这个接口。下面是实现的接口。IXmlParseService:package cn.yj3g.service;import java.io.InputStream;import java.util.List;import cn.yj3g.entity.Person;//定义一个...

weixin_28824127的博客 1504

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android xml解析 简书,Android中的三种XML解析方式

在Android中提供了三种解析XML的方式:SAX(Simple API XML),DOM(Document Objrect Model),以及Android推荐的 Pull解析方式.下面就对三种解析方式一一详细阐述。person.xmlzhangsan21lisi22wangwu222SAX解析,SAX是事件驱动型XML解析的一个标准接口不会改变 SAX的工作原理简单地说就是对文档进行顺序扫描...

weixin_39744606的博客 1066

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 三种xml解析方式

本文介绍在Android平台中实现对XML的三种解析方式。   XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。   在Android中,常见的XML解析器分别为DOM解析器、SAX解析器和PULL解析器,下面,我将一一向大家详细介绍。   第一种方式:DOM解析器: DOM是基于树形结构的的节点或

freemind 536

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android中XML的三种解析方式

XML解析方式Android 提供了三种解析XML的方式:SAX(Simple API XML), DOM(Document Object Model), Pull

QuincyHu的博客 7863

详解android解析Xml的三种方式——DOM、SAX以及XMLpull

今天学习了android解析Xml的三种方式——DOM、SAX以及XMLpull,这里对它们进行总结。 如果理解有误,欢迎指正   ^_* 一、DOM方式解析: xml是先把xml文档都读到内存中,然后再用DOM API来访问树形结构,并获取数据。这个写起来很简

Luffy的专栏 3754

Android中xml 解析三种方式的区别

SAX、DOM、PULL的比较 SAX、DOM、PULL各有自己的特点,具体操作XML的时候该如何选择呢? 1.内存占用 这是一个根本性问题。由于Android手机性能相对于现在的应用操作还是有限的,程序对内存的占用直接影响到了解析XML的速度。在这点上,SAX、Pull以它们比DOM占用更少的内存的解析方式,更适合于Android手机开发。 2.编程方式 SAX采用事件驱动,在相应事件

skibug的专栏 3948

android xml解析的三种方式

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33830216的博客 109

Android中XML文件的三种解析方式

今天学习了xml文件的三种解析方式,其中包括在学习java时学习的SAX和DOM这两种解析方法。在Android中有一种开源的PULL解析方法,今天我将他们的具体用法和大家分享下。 业务需求:   给定一个xml文件,要求分别用SAX,DOM,PULL三种方法对xml文件进行解析。 运行效果图如下: 下面是具体实现步骤: 首先我们需要一个xml文件,下面是我xml文件的存放位置。

M78_Snail的专栏 878

android解析XML总结(SAX、Pull、Dom三种方式)

原文地址:http://www.cnblogs.com/JerryWang1991/  在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的优快云阅读器,用到了其中的两种(sax,pull),今天对android解析xml的这三种方式进行一次总结。 一、使用sax方式解析  基础知识

老田的专栏 675

Android中解析XML的三种方式

SAX解析器: SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的。当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理。在事件源调用事件处理器中特定方法的时候,还要传递给事件处理器相应事件的状态信息,这样事件处理器才能够根据提供的事件信息来决定自己的行为。 SAX解析器的优点

W_Mayday的博客 436

Android:解析XML的三种方式

1、首先,在布局文件中写一个Button控件和用来展示数据的ListView控件。 &lt;Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取XML" android:onClick="getdata"/...

huakaihualuo012的博客 370

Android三种方式解析Xml

在Android中,常见的XML解析器分别为SAX解析器、DOM解析器和PULL解析器 SAX解析器: SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的。当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理。在事件源调用事件处理器中特定方法的时候,还要传递给事件处理器相应事件

玩绅沉 705

Android 解析XML文件的三种方式 DOM,SAX,PULL

我是通过参考:http://www.cnblogs.com/zhangdongzi/archive/2011/04/14/2016434.html在XML操作过程中,我们经常会想如何去处理它,在Android平台下,有三种解析XML文件的方式。第一种是DOM,它的特点是一次全部加载,如果对于数据量小的情况下,它的效率还可以,如果XML文件很大的情况下,速度就会慢起来。在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xml,xml是与平台无关的特性,被广泛运用于数

haha_mingg的专栏 9538
上一篇: Android之实现简单小闹钟
下一篇: Android 解析JSON
d_shadow
博客等级 码龄10年 42粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值