文件解析方法和终端与流程

文档序号:21976593发布日期:2020-08-25 19:09阅读:141来源:国知局
文件解析方法和终端与流程

本申请涉及文件解析领域,尤其涉及一种文件解析方法和终端。



背景技术:

在安卓(android)系统中,一些系统配置通常保存在可扩展标记语言(extensiblemarkuplanguage,xml)类型的文件中,在android系统启动或运行过程中,某些系统服务或应用需要读取xml文件中的数据来完成相应的功能,因此会涉及到xml文件的解析。

当解析xml文件出现异常时,android系统原生设计中没有对此进行容错处理,导致系统服务或应用运行异常。例如,如果这种异常发生在开机时的系统服务启动过程中,有可能会导致android系统无法正常启动,产生开机定屏的现象,即屏幕始终显示开机动画,无法真正开机,因此对用户使用造成很大影响。



技术实现要素:

本申请的实施例提供一种文件解析方法和终端,用于防止文件解析异常。

为达到上述目的,本申请的实施例采用如下技术方案:

第一方面,本申请的实施例提供了一种文件解析方法,包括:

按行解析可扩展标记语言xml文件中的xml语句,并捕获解析异常;

发生解析异常时,仅将解析正常的xml语句保存至所述xml文件;

重新解析所述xml文件。

第二方面,提供了一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当被计算机执行时使所述计算机执行如第一方面所述的文件解析方法。

第三方面,提供了一种包含指令的计算机程序产品,当所述指令在计算机上运行时,使得计算机执行如第一方面所述的文件解析方法。

第四方面,提供一种终端,包括:处理器和存储器,存储器用于存储程序,处理器调用存储器存储的程序,以执行如第一方面所述的文件解析方法。

本申请的实施例提供的文件解析方法和终端,按行解析可扩展标记语言xml文件中的xml语句,并捕获解析异常;发生解析异常时,仅将解析正常的xml语句保存至xml文件;重新解析xml文件。能够区分xml文件中解析异常的xml语句和解析正常的xml语句,保存了解析正常的xml语句,尽可能的减少了用户的数据损失,并且能防止文件解析异常。

附图说明

图1为本申请的实施例提供的一种终端的结构示意图;

图2为本申请的实施例提供的一种文件解析方法的流程示意图。

具体实施方式

本申请实施例提供了一种终端和显示方法,可以应用于苹果公司所开发的ios系统,谷歌公司所开发的android系统,微软公司所开发的windows系统等。本申请实施例以android系统为例进行说明,但并不限于此。所述终端可以是手机、电视、电脑、智能手表等设备。

如图1所示,以终端为手机为例,对终端的结构进行说明。

终端100可以包括:射频(radiofrequency,rf)电路110、存储器120、输入单元130、显示单元140、传感器150、音频电路160、无线保真(wirelessfidelity,wi-fi)模块170、处理器180、蓝牙模块181、以及电源190等部件。

rf电路110可用于在收发信息或通话过程中信号的接收和发送,可以接收基站的下行数据后交给处理器180处理;可以将上行数据发送给基站。通常,rf电路包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等器件。

存储器120可用于存储软件程序及数据。处理器180通过运行存储在存储器120的软件程序或数据,从而执行终端100的各种功能以及数据处理。存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器120存储有使得终端100能运行的操作系统,例如苹果公司所开发的操作系统,谷歌公司所开发的开源操作系统,微软公司所开发的操作系统等。本申请中存储器120可以存储操作系统及各种应用程序,还可以存储执行本申请实施例所述方法的代码。

输入单元130(例如触摸屏)可用于接收输入的数字或字符信息,产生与终端100的用户设置以及功能控制有关的信号输入。具体地,输入单元130可以包括设置在终端100正面的触控屏131,可收集用户在其上或附近的触摸操作。

显示单元140(即显示屏)可用于显示由用户输入的信息或提供给用户的信息以及终端100的各种菜单的图形用户界面(graphicaluserinterface,gui)。显示单元140可包括设置在终端100正面的显示屏141。其中,显示屏141可以采用液晶显示器、发光二极管等形式来配置。显示单元140可以用于显示本申请中所述的各种图形用户界面。触控屏131可以覆盖在显示屏141之上,也可以将触控屏131与显示屏141集成而实现终端100的输入和输出功能,集成后可以简称触摸显示屏。

终端100还可以包括至少一种传感器150,比如光传感器、运动传感器。终端100还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器。

音频电路160、扬声器161、麦克风162可提供用户与终端100之间的音频接口。音频电路160可将接收到的音频数据转换后的电信号,传输到扬声器161,由扬声器161转换为声音信号输出;另一方面,麦克风162将收集的声音信号转换为电信号,由音频电路160接收后转换为音频数据,再将音频数据输出至rf电路110以发送给比如另一终端,或者将音频数据输出至存储器120以便进一步处理。

wi-fi属于短距离无线传输技术,终端100可以通过wi-fi模块170帮助用户收发电子邮件、浏览网页和访问流媒体等,它为用户提供了无线的宽带互联网访问。

处理器180是终端100的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器120内的软件程序,以及调用存储在存储器120内的数据,执行终端100的各种功能和处理数据。在一些实施例中,处理器180可包括一个或多个处理单元;处理器180还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器180中。本申请中处理器180可以运行操作系统、应用程序、用户界面显示及触控响应,以及本申请实施例涉及的方法。

蓝牙模块181,用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,终端100可以通过蓝牙模块181与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。

终端100还包括给各个部件供电的电源190(比如电池)。电源可以通过电源管理系统与处理器180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗等功能。

在android系统中,一些功能模块会将数据保存到xml格式的文件中。功能模块在向xml文件保存数据时,若系统不稳定或其他原因,导致保存的xml文件出现格式错乱的情况。当解析这些格式错乱的xml文件时便会发生异常,有时会严重影响到用户使用android设备。目前android系统原生设计中没有对此进行容错处理。

例如,设置提供者(settingsprovider)是android系统中提供系统设置数据共享的一种提供者(provider),该provider包含一种系统(system)类型的表,其中,该system表中的数据保存在下述xml文件中/data/data/system/users/0/settings_system.xml。

在android系统开机过程中,移动安全服务(mobilesafeservice)作为一种系统服务需要读写系统设置数据,就需要首先获取并初始化settingsprovider,而settingsprovider初始化时会解析下述xml文件settings_system.xml。示例性的,正常情况下settings_system.xml文件内容可能如下面示例1所示,以<settings>标签开始,以</settings>标签结束,</settings>标签后不能再有文本数据。

示例1:

示例性的,在异常情况下settings_system.xml文件内容可能如下面示例2所示,在结束标签</settings>后还有文本数据(如粗体所示内容)。或者如下面示例3所示,无结束标签</settings>。或者如下面示例4所示,xml语句不完整(例如“<”和“/>”未成对出现),等等。因为不符合xml格式规范,会使得settings_system.xml文件解析失败,进而使得mobilesafeservice获取并初始化settingsprovider失败而发生启动异常,系统服务启动异常会导致android系统开机失败。

示例2:

示例3:

示例4:

再例如,android系统中,用户录入的指纹信息会保存在下述xml文件中/data/data/system/users/0/fingerprint.xml,android系统刚开机时锁屏程序会通过指纹服务(fingerprintservice)中的接口解析fingerprint.xml文件以获取指纹相关信息。若此时解析fingerprint.xml文件异常,会导致锁屏流程发生异常,进而影响了整个系统用户界面(systemui)功能模块的启动,最终导致用户无法正常解锁进入android设备。

如图2所示,本申请实施例提供了一种文件解析方法,应用于上述终端,该方法包括:

s101、按行解析xml文件中的xml语句,并捕获解析异常。

本申请实施例中解析异常指xml文件中的xml语句不符合xml规范引起的解析异常。例如,在结束标签之后还有xml语句,没有结束标签,xml语句不完整(例如“<”和“/>”未成对出现)等等,本申请不作限定。

具体的,可以通过xmlpullparser工具类来解析xml文件中的xml语句。进一步的,可以改写调用xmlpullparser工具类的代码,在调用xmlpullparser工具类的代码中增加try{…}catch{…}语句来捕获解析异常。

示例性的,以示例2所示的settings_system.xml文件解析异常情况为例进行说明,按行解析指:首先解析第一行<?xmlversion=’1.0’encoding=’utf-8’standalone=’yes’?>,然后解析第二行<settingversion=”148”>,依此类推。在解析的过程中通过try{…}catch{…}语句来捕获解析异常。

s102、发生解析异常时,仅将解析正常的xml语句保存至xml文件。

可选的,在一种方式中,在未发生解析异常时,按行将解析正常的xml语句保存至预设位置,该预设位置可以为自定义的系统变量;发生解析异常时,清空xml文件,并将在预设位置保存的xml语句保存至xml文件。

示例性的,以示例2所示的settings_system.xml文件解析异常情况为例进行说明,按行解析至xml语句</settings>都解析正常,并将解析正常的xml语句保存至自定义的系统变量中。

当从结束标签</settings>继续解析时,解析到xml语句value=”1”defaultsysset=”true”/>时,由于</settings>为结束标签,该结束标签后不应该再有xml语句,因此,try{…}catch{…}语句捕获到解析异常。此时可以清空settings_system.xml文件,将自定义的系统变量中的内容保存至settings_system.xml文件中。

进一步的,发生解析异常时,如果解析正常的最后一句xml语句不是结束标签语句,则在解析正常的最后一句xml语句之后按照xml规范增加结束标签语句。按照xml规范增加结束标签语句指的是增加与起始标签语句对应的结束标签语句。例如起始标签语句为<setting>,则对应的结束标签语句为</settings>。

示例性的,以示例3所示的settings_system.xml文件解析异常情况为例进行说明,由于解析正常的最后一句xml语句<settingid=”8”name=”mute_streams_affected”value=”46”/>不是结束标签语句,如果重新解析仍会发生解析异常。因此,可以在该xml语句之后按照xml规范增加结束标签语句</settings>。最终保存的settings_system.xml文件结果如示例1所示。

可选的,在另一种方式中,可以删除xml文件中解析异常的xml语句及之后的xml语句,并保存xml文件。

示例性的,以示例2所示的settings_system.xml文件解析异常情况为例进行说明,按行解析至xml语句</settings>都解析正常,当继续解析时,发现在结束标签</settings>后还有xml语句,try{…}catch{…}语句捕获到解析异常。此时,可以直接将settings_system.xml文件中xml语句</settings>之后的xml语句删除,并保存settings_system.xml文件。

s103、重新解析xml文件。

示例性的,对示例1所示的settings_system.xml文件重新解析,将不会再出现解析异常情况。

通过上述方法,可以有效规避因xml文件解析异常而产生的开机定屏问题。

本申请实施例提供的文件解析方法和终端,按行解析可扩展标记语言xml文件中的xml语句,并捕获解析异常;发生解析异常时,仅将解析正常的xml语句保存至xml文件;重新解析xml文件。能够区分xml文件中解析异常的xml语句和解析正常的xml语句,保存了解析正常的xml语句,尽可能的减少了用户的数据损失,并且能防止文件解析异常。

本申请的实施例提供一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当被计算机执行时使计算机执行如图2中所述的文件解析方法。

本申请的实施例提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机执行如图2中所述的文件解析方法。

本申请的实施例提供一种终端,包括:处理器和存储器,存储器用于存储程序,处理器调用存储器存储的程序,以执行如图2中所述的文件解析方法。

由于本申请的实施例中的终端、计算机可读存储介质、计算机程序产品可以应用于上述文件解析方法,因此,其所能获得的技术效果也可参考上述方法实施例,本申请的实施例在此不再赘述。

需要说明的是,上述各单元可以为单独设立的处理器,也可以集成在控制器的某一个处理器中实现,此外,也可以以程序代码的形式存储于控制器的存储器中,由控制器的某一个处理器调用并执行以上各单元的功能。这里所述的处理器可以是一个中央处理器(centralprocessingunit,cpu),或者是特定集成电路(applicationspecificintegratedcircuit,asic),或者是被配置成实施本申请实施例的一个或多个集成电路。

应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1