CN109683906A - 处理html代码片段的方法及装置 - Google Patents

处理html代码片段的方法及装置 Download PDF

Info

Publication number
CN109683906A
CN109683906A CN201811593690.0A CN201811593690A CN109683906A CN 109683906 A CN109683906 A CN 109683906A CN 201811593690 A CN201811593690 A CN 201811593690A CN 109683906 A CN109683906 A CN 109683906A
Authority
CN
China
Prior art keywords
node
html code
text
code segment
carry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811593690.0A
Other languages
English (en)
Inventor
董永清
孙良木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201811593690.0A priority Critical patent/CN109683906A/zh
Publication of CN109683906A publication Critical patent/CN109683906A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding

Abstract

本公开提供一种处理HTML代码片段的方法及装置。所述方法用于对快应用的HTML代码片段进行处理,所述方法包括:获取原HTML代码片段,获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息,根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。本方法去除了原HTML代码片段中包括的text节点下挂载text节点的结构,从而避免了因该结构的存在,导致的原HTML代码片段执行时文本信息无法正常显示的问题发生,保证了生成的新HTML代码片段中文本信息正常显示。

Description

处理HTML代码片段的方法及装置
技术领域
本公开涉及计算机通信技术领域,尤其涉及一种处理HTML代码片段的方法及装置。
背景技术
快应用是基于手机硬件平台的新型应用形态,具备传统APP完整的应用体验,具有无需安装、即点即用等特点。快应用框架中设有自己独特的标签,这些标签与传统的HTML(HyperTex t Markup Language,超级文本标记语言)标签不同,具体地,快应用中设有三种用于显示文本的文本标签,分别是:text标签、a标签和span标签。
上述三种文本标签的使用特性如下:span标签内只能添加文本信息,当果span标签下挂载其他标签时,代码编译时会报错;当a标签下挂载span标签或文本信息时,文本信息正常显示,当a标签下挂载text标签或非文本标签时,虽然代码编译时不报错,但是文本信息无法正常显示;当text标签下挂载a标签、span标签或文本信息时,文本信息正常显示,当text标签下挂载text标签或非文本标签时,虽然代码编译时不报错,但是文本信息无法正常显示。
在快应用开发过程中,如果开发人员未按照text标签的使用特性编写代码,则会导致文本信息无法正常显示。
发明内容
有鉴于此,本公开提供一种处理HTML代码片段的方法及装置,通过根据原HTML代码片段中各text节点所挂载的相关节点的节点信息,对原HTML代码片段进行处理,从而生成不包括text节点下挂载text节点结构的新HTML代码片段。
根据本公开实施例的第一方面,提供了一种处理HTML代码片段的方法,用于对快应用的HTML代码片段进行处理,所述方法包括:
获取原HTML代码片段;
获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
可选地,所述根据所述节点信息,对所述原HTML代码片段进行处理,包括:
按照所述原HTML代码片段的从根节点至端节点的顺序,依次对每个节点执行以下操作:
判断当前节点是否为所述text节点;
若所述当前节点为text节点,根据所述当前节点对应的子节点信息,判断所述当前节点下是否挂载文本子节点;
若所述当前节点下挂载所述文本子节点,移除所述当前节点,将所述文本子节点挂载到所述当前节点的父节点下;
若所述当前节点下未挂载所述文本子节点,根据所述当前节点对应的父节点信息,判断所述父节点是否属于文本节点;
若所述父节点属于文本节点,将所述当前节点改为span节点。
可选地,所述方法还包括:
若所述当前节点不为text节点,判断所述当前节点的节点类型与预设节点类型是否匹配,所述预设节点类型包括以下至少一项:非原生类型、非文本类型;
若所述当前节点的所述节点类型与所述预设节点类型匹配,移除所述当前节点;
判断所述当前节点下是否挂载子节点;
若所述当前节点下挂载所述子节点,根据所述当前节点的所述节点类型,对所述子节点进行处理。
可选地,所述根据所述当前节点的所述节点类型,对所述子节点进行处理,包括:
若所述节点类型为所述非原生类型,将所述当前节点下挂载的子节点挂载到所述当前节点的父节点下;或者,
若所述节点类型为所述非文本类型,删除所述当前节点下挂载的所述子节点。
可选地,所述获取原HTML代码片段,包括:
获取原HTML代码集合;
从所述原HTML代码集合中,获取用于编写文本信息的所述原HTML代码片段;
在所述生成新HTML代码片段之后,所述方法还包括:
使用所述新HTML代码片段,替换所述原HTML代码集合中的所述原HTML代码片段,生成新HTML代码集合。
可选地,所述从所述原HTML代码集合中,获取用于编写文本信息的所述原HTML代码片段,包括:
识别所述原HTML代码集合中的文本指示节点;
获取挂载在所述文本指示节点下的所述原HTML代码片段。
根据本公开实施例的第二方面,提供了一种处理HTML代码片段的装置,所述装置包括:
第一获取模块,被配置为获取原HTML代码片段;
第二获取模块,被配置为获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
第一处理模块,被配置为根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
可选地,所述第一处理模块,包括:
第一判断子模块,被配置为判断当前节点是否为所述text节点;
第二判断子模块,被配置为若所述当前节点为text节点,根据所述当前节点对应的子节点信息,判断所述当前节点下是否挂载文本子节点;
移除子模块,被配置为若所述当前节点下挂载所述文本子节点,移除所述当前节点,将所述文本子节点挂载到所述当前节点的父节点下;
第三判断子模块,被配置为若所述当前节点下未挂载所述文本子节点,根据所述当前节点对应的父节点信息,判断所述父节点是否属于文本节点;
修改子模块,被配置为若所述父节点属于文本节点,将所述当前节点改为span节点。
可选地,所述装置还包括:
第一判断模块,被配置为若所述当前节点不为text节点,判断所述当前节点的节点类型与预设节点类型是否匹配,所述预设节点类型包括以下至少一项:非原生类型、非文本类型;
移除模块,被配置为若所述当前节点的所述节点类型与所述预设节点类型匹配,移除所述当前节点;
第二判断模块,被配置为判断所述当前节点下是否挂载子节点;
第二处理模块,被配置为若所述当前节点下挂载所述子节点,根据所述当前节点的所述节点类型,对所述子节点进行处理。
可选地,所述第二处理模块,包括:
挂载子模块,被配置为若所述节点类型为所述非原生类型,将所述当前节点下挂载的子节点挂载到所述当前节点的父节点下;或者,
删除子模块,被配置为若所述节点类型为所述非文本类型,删除所述当前节点下挂载的所述子节点。
可选地,所述第一获取模块,包括:
第一获取子模块,被配置为获取原HTML代码集合;
第二获取子模块,被配置为从所述原HTML代码集合中,获取用于编写文本信息的所述原HTML代码片段;
所述装置还包括:
替换模块,被配置为在所述生成新HTML代码片段之后,使用所述新HTML代码片段,替换所述原HTML代码集合中的所述原HTML代码片段,生成新HTML代码集合。
可选地,所述第二获取子模块,包括:
识别单元,被配置为识别所述原HTML代码集合中的文本指示节点;
获取单元,被配置为获取挂载在所述文本指示节点下的所述原HTML代码片段。
根据本公开实施例的第三方面,提供了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面任一项所述方法的步骤。
根据本公开实施例的第四方面,提供了一种处理HTML代码片段的装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取原HTML代码片段;
获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
本公开实施例提供的技术方案可以包括以下有益效果:
本公开中,通过获取原HTML代码片段中各text节点所挂载的相关节点的节点信息,以及根据该节点信息,对原HTML代码片段中text标签进行扁平化处理,去除原HTML代码片段中包括的text节点下挂载text节点的结构,从而避免了因该结构的存在,导致的原HTML代码片段执行时文本信息无法正常显示的问题发生,保证了生成的新HTML代码片段中文本信息正常显示。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
图1是根据一示例性实施例示出的一种处理HTML代码片段的方法流程图;
图2是根据一示例性实施例示出的另一种处理HTML代码片段的方法流程图;
图3是根据一示例性实施例示出的另一种处理HTML代码片段的方法流程图;
图4是根据一示例性实施例示出的另一种处理HTML代码片段的方法示意图;
图5是根据一示例性实施例示出的另一种处理HTML代码片段的方法示意图;
图6是根据一示例性实施例示出的另一种处理HTML代码片段的方法示意图;
图7是根据一示例性实施例示出的一种处理HTML代码片段的装置框图;
图8是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图;
图9是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图;
图10是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图;
图11是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图;
图12是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图;
图13是根据一示例性实施例示出的一种用于处理HTML代码片段的装置的一结构示意图;
图14是根据一示例性实施例示出的另一种用于处理HTML代码片段的装置的一结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如图1所示,图1是本公开根据一示例性实施例示出的一种处理HTML代码片段的方法流程图,用于对快应用的HTML代码片段进行处理,所述方法包括以下步骤:
在步骤101中,获取原HTML代码片段。
本公开提供了一种处理HTML代码片段的方法,应用于代码处理模块。
本公开中,原HTML代码片段是用于编写文本信息的代码片段,包括适用于快应用的文本标签,如包括以下至少一项:text标签、a标签、span标签。代码处理模块在执行本公开提供的方法时,需要先获取到原HTML代码片段,之后根据本公开提供的后续方法,对原HTML代码片段进行处理。
需要说明的是,在编写HTML代码片段时,HTML代码片段中的text、a、span均称为标签;而在对HTML代码片段进行处理时,如执行本公开提供的方法时,HTML代码片段中的text、a、span均称为节点。
在一个可选的实施例中,若代码处理模块并未直接获取原HTML代码片段,而是获取到包括原HTML代码片段的原HTML代码集合,例如获取到DOM结构的代码集合,则参照图2是根据一示例性实施例示出的另一种处理HTML代码片段的方法流程图,代码处理模块获取原HTML代码片段的操作可以通过以下方式实现:在步骤1011中,获取原HTML代码集合;在步骤1012中,从原HTML代码集合中,获取原HTML代码片段。
如果原HTML代码集合包括两个以上原HTML代码片段,则从原HTML代码集合中获取所有原HTML代码片段。
基于步骤1011-步骤1012的设置,使得代码处理模块具有获取原HTML代码集合、以及从原HTML代码集合中获取原HTML代码片段的功能,代码处理模块的功能得到丰富。
针对上述步骤1012,在快应用代码中,预设有文本指示节点,HTML代码片段中的文本节点挂载在文本指示节点下。参照图3是根据一示例性实施例示出的另一种处理HTML代码片段的方法流程图,代码处理模块从原HTML代码集合中,获取原HTML代码片段的操作可以通过以下方式实现:在步骤1012-1中,识别原HTML代码集合中的文本指示节点;在步骤1012-2中,获取挂载在文本指示节点下的原HTML代码片段。
适用的文本指示节点有多种,例如richtext富文本节点,代码处理模块识别出原HTML代码集合中的richtext节点,获取挂载在richtext节点下的原HTML代码片段。
基于步骤1012-1-步骤1012-2的设置,使得代码处理模块通过识别原HTML代码集合中的文本指示节点,确定出原HTML代码片段在原HTML代码集合中的位置,获取到挂载在文本指示节点下的原HTML代码片段,从而实现代码处理模块根据文本指示节点,从原HTML代码集合中获取原HTML代码片段,代码处理模块的功能得到丰富。
在步骤102中,获取原HTML代码片段中各text节点所挂载的相关节点的节点信息。
代码处理模块在获取到原HTML代码片段后,判断原HTML代码片段中是否存在text节点,若原HTML代码片段中存在text节点,则获取text节点所挂载的相关节点的节点信息。
相关节点有多种,例如,相关节点可以仅包括text节点的父节点、仅包括text节点的子节点、或者同时包括text节点的父节点和子节点。相关节点的节点信息有多种,例如,父节点的节点类型、子节点的节点类型、text节点下是否挂载子节点等信息,节点类型有多种,如文本类型、非文本类型、原生类型、非原生类型即自定义类型等。
在步骤103中,根据获取的节点信息,对原HTML代码片段进行处理,生成新HTML代码片段,新HTML代码片段中不包括text节点下挂载text节点的结构。
代码处理模块在获取到原HTML代码片段中各text节点所挂载的相关节点的节点信息后,根据获取的节点信息,对原HTML代码片段中text标签进行扁平化处理,去除原HTML代码片段中包括的text节点下挂载text节点的结构,从而避免了因该结构的存在,导致的HTML代码片段执行时文本信息无法正常显示的问题发生,保证了生成的新HTML代码片段中文本信息正常显示。
在一个可选的实施例中,代码处理模块根据获取的节点信息,对原HTML代码片段进行处理的操作可以通过以下方式实现:代码处理模块按照原HTML代码片段的从根节点至端节点的顺序,依次对每个节点执行图4所示的操作。参照图4是根据一示例性实施例示出的另一种处理HTML代码片段的方法流程图,依次对每个节点执行图4所示的操作可以包括以下步骤:
在步骤1031中,判断当前节点是否为text节点。
当前节点为代码处理模块当前执行图4所示的操作的操作对象。例如,原HTML代码片段依次包括根节点、中间节点和端节点,代码处理模块当前对中间节点执行图4示的操作,则中间节点为当前节点。
在步骤1032中,若当前节点为text节点,根据当前节点对应的子节点信息,判断当前节点下是否挂载文本子节点。
文本子节点可以为text子节点、a子节点或span子节点。
代码处理模块在判定当前节点为text节点后,判断当前节点下是否挂载子节点,如果当前节点下挂载子节点,则根据之前获取的该子节点的子节点信息,判断该子节点是否属于文本节点,若该子节点属于文本节点,则判定当前节点下挂载了文本子节点,若该子节点不属于文本节点,则判定当前节点下未挂载文本子节点;若当前节点下未挂载子节点,则判定当前节点下未挂载文本子节点。
在步骤1033中,若当前节点下挂载文本子节点,移除当前节点,将文本子节点挂载到当前节点的父节点下。
代码处理模块在判定当前节点下挂载文本子节点后,为避免text节点下挂载text节点的结构出现,移除当前节点,将文本子节点挂载到当前节点的父节点下。
例如,原HTML代码片段如下:
当前节点为text节点,代码处理模块在判定当前节点下挂载span节点后,移除当前节点,将span节点挂载到div节点下,生成的新HTML代码判断如下:
<div>
<span></span>
</div>
在步骤1034中,若当前节点下未挂载文本子节点,根据当前节点对应的父节点信息,判断父节点是否属于文本节点。
代码处理模块在判定当前节点下未挂载文本子节点后,根据之前获取的当前节点挂载的父节点的父节点信息,判断该父节点是否属于文本节点。
本步骤中的文本节点可以是a节点或span节点。
在步骤1035中,若当前节点的父节点属于文本节点,将当前节点改为span节点。
代码处理模块在判定当前节点的父节点属于文本节点后,为避免不符合文本标签使用规则的标签嵌套结构的出现,将当前节点改为span节点。若判定当前节点的父节点不属于文本节点,则可以维持当前节点为text节点。
例如,原HTML代码片段如下:
当前节点为text节点,代码处理模块在判定当前节点下未挂载文本子节点,且根据当前节点对应的父节点信息,确定父节点属于文本节点后,将当前节点改为span节点,生成的新HTML代码判断如下:
代码处理模块在完成对当前节点的处理后,按照步骤1031-步骤1035,对下一节点进行处理。
例如,原HTML代码片段如下:
代码处理模块在获取到本例子中的HTML代码片段后,按照div节点至text端节点的方向,对该HTML代码片段中的text节点进行扁平化处理,具体处理过程如下:
代码处理模块先对根节点进行判断,在判定根节点为div节点而并非是text节点后,对根节点下挂载的节点进行判断,在判定该节点为text节点且该节点下挂载a子节点后,移除该节点,并将a节点挂载到div节点下,得到如下HTML代码片段如下:
进一步,代码处理模块在判定新挂载到div节点下的节点为a节点后,对a节点下挂载的子节点进行判断,在判定该子节点为text节点且该子节点下未挂载文本子节点后,将该子节点改为span节点,生成的新HTML代码片段如下:
代码处理模块通过按照原HTML代码片段的从根节点至端节点的顺序,依次对每个节点执行步骤1031-步骤1035,去除了原HTML代码片段中包括的text节点下挂载text节点的结构,使得生成的新HTML代码片段中不包括该结构,保证了新HTML代码片段执行时文本信息的正常显示。
在一个可选的实施例中,参照图5是根据一示例性实施例示出的另一种处理HTML代码片段的方法流程图,在图4中步骤1031的基础上,所述方法还包括以下步骤:
在步骤104中,若当前节点不为text节点,判断当前节点的节点类型与预设节点类型是否匹配,预设节点类型包括以下至少一项:非原生类型、非文本类型。
原生节点即native端(目前是安卓)支持的节点。开发者可以利用原生节点去构造符合功能的自定义节点即非原生节点。常见的原生节点包括image、progress、div、list、refresh、richtext、stack、swiper、tab、input、slider、picker、switch、textarea等。本公开中的非原生类型即为自定义类型。当HTML代码片段中包括属于非原生类型的节点时,HTML代码片段中的文本信息无法正常显示。
属于非文本类型的节点有多种,例如image节点、vedio节点、canvas节点、div节点等。当HTML代码片段中包括属于非文本类型的节点时,HTML代码片段中的文本信息无法正常显示。
在步骤105中,若当前节点的节点类型与预设节点类型匹配,移除当前节点。
代码处理模块在判定当前节点的节点类型与预设节点类型匹配后,移除当前节点,以保证原HTML代码片段中文本信息正常显示。
在步骤106中,判断当前节点下是否挂载子节点。
在步骤107中,若当前节点下挂载子节点,根据当前节点的节点类型,对子节点进行处理。
基于当前节点的节点类型不同,使得代码处理模块在判定当前节点下挂载子节点后,对子节点进行处理的操作不同。
具体地,若当前节点的节点类型为非原生类型,则代码处理模块将当前节点下挂载的子节点挂载到当前节点的父节点下。
例如,原HTML代码片段如下:
代码处理模块在完成对div节点的判断后,对customComp节点进行判断,在判定customComp节点为非原生节点后,删除customComp节点,并将customComp节点下挂载的text节点挂载到div节点下,生成的HTML代码片段如下:
代码处理模块根据当前节点的节点类型,对子节点进行处理的操作可以包括:
若当前节点的节点类型为非文本类型,则代码处理模块删除原挂载在当前节点下的子节点。
例如,原HTML代码片段如下:
代码处理模块对div节点下挂载的text节点进行处理后,得到的HTML代码片段如下:
进一步,代码处理模块在判定div节点下新挂载的节点为span节点后,对span节点下挂载的节点div节点进行判断,在判定该节点为div节点,节点类型为非文本节点后,将该节点以及该节点下挂载的子节点一并移除,得到的HTML代码片段如下:
<div>
<span></span>
</div>
基于步骤104-步骤107的设置,使得代码处理模块在判定当前节点不是text节点,且判定当前节点的节点类型为非原生类型/非文本类型后,根据当前节点的节点类型,对当前节点下挂载的子节点进行处理,从而去除了原HTML代码片段中的非原生节点/非文本节点,进一步保证了HTML代码片段中编写的文本信息正常显示。
在一个可选的实施例中,在图2所示的方法的基础上,代码处理模块在获取到上述原HTML代码集合、从原HTML代码集合中获取原HTML代码片段、根据步骤102和步骤103对原HTML代码片段进行处理,生成新HTML代码片段之后,参照图6是根据一示例性实施例示出的另一种处理HTML代码片段的方法流程图,所述方法还包括:在步骤108中,使用新HTML代码片段,替换原HTML代码集合中的原HTML代码片段,生成新HTML代码集合。
代码处理模块通过执行步骤1011、步骤1012、步骤102、步骤103和步骤108,去除了原HTML代码集合中包括的text节点下挂载text节点的结构,避免了因该结构的存在,导致的HTML代码集合执行时文本信息无法正常显示的问题发生,使得生成的新HTML代码集合执行时文本信息能够正常显示。
本公开中的代码处理模块可以置于快应用前端框架的入口文件中,代码处理模块接收到待输入的原HTML代码集合后,对HTML代码集合进行上述处理,具体地,对text节点进行扁平化处理、删除非原生节点、删除非文本节点等,以使生成的新HTML代码集合中不包括text节点下挂载text节点的结构、非原生节点以及非文本节点,从而保证了新HTML代码集合执行时文本信息正常显示。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。
其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。
与前述应用功能实现方法实施例相对应,本公开还提供了应用功能实现装置及相应的终端的实施例。
参照图7是根据一示例性实施例示出的一种处理HTML代码片段的装置框图,所述装置可以包括:
第一获取模块21,被配置为获取原HTML代码片段;
第二获取模块22,被配置为获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
第一处理模块23,被配置为根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
参照图8是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图,在图7所示装置实施例的基础上,所述第一处理模块23,可以包括:
第一判断子模块231,被配置为判断当前节点是否为所述text节点;
第二判断子模块232,被配置为若所述当前节点为text节点,根据所述当前节点对应的子节点信息,判断所述当前节点下是否挂载文本子节点;
移除子模块233,被配置为若所述当前节点下挂载所述文本子节点,移除所述当前节点,将所述文本子节点挂载到所述当前节点的父节点下;
第三判断子模块234,被配置为若所述当前节点下未挂载所述文本子节点,根据所述当前节点对应的父节点信息,判断所述父节点是否属于文本节点;
修改子模块235,被配置为若所述父节点属于文本节点,将所述当前节点改为span节点。
参照图9是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图,在图8所示装置实施例的基础上,所述装置还可以包括:
第一判断模块24,被配置为若所述当前节点不为text节点,判断所述当前节点的节点类型与预设节点类型是否匹配,所述预设节点类型包括以下至少一项:非原生类型、非文本类型;
移除模块25,被配置为若所述当前节点的所述节点类型与所述预设节点类型匹配,移除所述当前节点;
第二判断模块26,被配置为判断所述当前节点下是否挂载子节点;
第二处理模块27,被配置为若所述当前节点下挂载所述子节点,根据所述当前节点的所述节点类型,对所述子节点进行处理。
参照图10是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图,在图9所示装置实施例的基础上,所述第二处理模块27,可以包括:
挂载子模块271,被配置为若所述节点类型为所述非原生类型,将所述当前节点下挂载的子节点挂载到所述当前节点的父节点下;或者,
删除子模块272,被配置为若所述节点类型为所述非文本类型,删除所述当前节点下挂载的所述子节点。
参照图11是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图,在图7所示装置实施例的基础上,所述第一获取模块21,可以包括:
第一获取子模块211,被配置为获取原HTML代码集合;
第二获取子模块212,被配置为从所述原HTML代码集合中,获取用于编写文本信息的所述原HTML代码片段;
所述装置还可以包括:
替换模块28,被配置为在所述生成新HTML代码片段之后,使用所述新HTML代码片段,替换所述原HTML代码集合中的所述原HTML代码片段,生成新HTML代码集合。
参照图12是根据一示例性实施例示出的另一种处理HTML代码片段的装置框图,在图11所示装置实施例的基础上,所述第二获取子模块212,包括:
识别单元2121,被配置为识别所述原HTML代码集合中的文本指示节点;
获取单元2122,被配置为获取挂载在所述文本指示节点下的所述原HTML代码片段。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,一方面,本公开实施例提供了一种处理HTML代码片段的装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,上述处理器被配置为:
获取原HTML代码片段;
获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
图13是根据一示例性实施例示出的一种处理HTML代码片段的装置2000的一结构示意图。例如,装置2000可以是用户设备,可以具体为移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理,可穿戴设备如智能手表、智能眼镜、智能手环、智能跑鞋等。
参照图13,装置2000可以包括以下一个或多个组件:处理组件2002,存储器2004,电源组件2006,多媒体组件2008,音频组件2010,输入/输出(I/O)的接口2012,传感器组件2014,以及通信组件2016。
处理组件2002通常控制装置2000的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件2002可以包括一个或多个处理器2020来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件2002可以包括一个或多个模块,便于处理组件2002和其他组件之间的交互。例如,处理组件2002可以包括多媒体模块,以方便多媒体组件2008和处理组件2002之间的交互。
存储器2004被配置为存储各种类型的数据以支持在设备2000的操作。这些数据的示例包括用于在装置2000上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器2004可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件2006为装置2000的各种组件提供电力。电源组件2006可以包括电源管理系统,一个或多个电源,及其他与为装置2000生成、管理和分配电力相关联的组件。
多媒体组件2008包括在上述装置2000和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。上述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与上述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件2008包括一个前置摄像头和/或后置摄像头。当设备2000处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件2010被配置为输出和/或输入音频信号。例如,音频组件2010包括一个麦克风(MIC),当装置2000处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器2004或经由通信组件2016发送。在一些实施例中,音频组件2010还包括一个扬声器,用于输出音频信号。
I/O接口2012为处理组件2002和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件2014包括一个或多个传感器,用于为装置2000提供各个方面的状态评估。例如,传感器组件2014可以检测到设备2000的打开/关闭状态,组件的相对定位,例如上述组件为装置2000的显示器和小键盘,传感器组件2014还可以检测装置2000或装置2000一个组件的位置改变,用户与装置2000接触的存在或不存在,装置2000方位或加速/减速和装置2000的温度变化。传感器组件2014可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件2014还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件2014还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件2016被配置为便于装置2000和其他设备之间有线或无线方式的通信。装置2000可以接入基于通信标准的无线网络,如WiFi,2G或3G,4G LTE、5G NR或它们的组合。在一个示例性实施例中,通信组件2016经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,上述通信组件2016还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置2000可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种非临时性计算机可读存储介质,例如包括指令的存储器2004,当存储介质中的指令由装置2000的处理器2020执行时,使得装置2000能够执行发送信息的方法,该方法包括:
获取原HTML代码片段;
获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
如图14所示,图14是根据一示例性实施例示出的一种用于处理HTML代码片段的装置2100的一结构示意图。例如,装置2100可以被提供为一应用服务器。参照图14,装置2100包括处理组件2122,其进一步包括一个或多个处理器,以及由存储器2116所代表的存储器资源,用于存储可由处理部件2122的执行的指令,例如应用程序。存储器2116中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件2122被配置为执行指令,以执行上述发送信息的方法。
装置2100还可以包括一个电源组件2126被配置为执行装置2100的电源管理,一个有线或无线网络接口2150被配置为将装置2100连接到网络,和一个输入输出(I/O)接口2158。装置2100可以操作基于存储在存储器2116的操作系统,例如Android、iOS、WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器2116,上述指令可由装置2100的处理组件2122执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
其中,当所述存储器2116中的指令由所述处理组件2122执行时,使得装置2100能够执行一种处理HTML代码片段的方法,包括:
获取原HTML代码片段;
获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (14)

1.一种处理HTML代码片段的方法,其特征在于,用于对快应用的HTML代码片段进行处理,所述方法包括:
获取原HTML代码片段;
获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
2.根据权利要求1所述的方法,其特征在于,所述根据所述节点信息,对所述原HTML代码片段进行处理,包括:
按照所述原HTML代码片段的从根节点至端节点的顺序,依次对每个节点执行以下操作:
判断当前节点是否为所述text节点;
若所述当前节点为text节点,根据所述当前节点对应的子节点信息,判断所述当前节点下是否挂载文本子节点;
若所述当前节点下挂载所述文本子节点,移除所述当前节点,将所述文本子节点挂载到所述当前节点的父节点下;
若所述当前节点下未挂载所述文本子节点,根据所述当前节点对应的父节点信息,判断所述父节点是否属于文本节点;
若所述父节点属于文本节点,将所述当前节点改为span节点。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述当前节点不为text节点,判断所述当前节点的节点类型与预设节点类型是否匹配,所述预设节点类型包括以下至少一项:非原生类型、非文本类型;
若所述当前节点的所述节点类型与所述预设节点类型匹配,移除所述当前节点;
判断所述当前节点下是否挂载子节点;
若所述当前节点下挂载所述子节点,根据所述当前节点的所述节点类型,对所述子节点进行处理。
4.根据权利要求3所述的方法,其特征在于,所述根据所述当前节点的所述节点类型,对所述子节点进行处理,包括:
若所述节点类型为所述非原生类型,将所述当前节点下挂载的子节点挂载到所述当前节点的父节点下;或者,
若所述节点类型为所述非文本类型,删除所述当前节点下挂载的所述子节点。
5.根据权利要求1所述的方法,其特征在于,所述获取原HTML代码片段,包括:
获取原HTML代码集合;
从所述原HTML代码集合中,获取用于编写文本信息的所述原HTML代码片段;
在所述生成新HTML代码片段之后,所述方法还包括:
使用所述新HTML代码片段,替换所述原HTML代码集合中的所述原HTML代码片段,生成新HTML代码集合。
6.根据权利要求5所述的方法,其特征在于,所述从所述原HTML代码集合中,获取用于编写文本信息的所述原HTML代码片段,包括:
识别所述原HTML代码集合中的文本指示节点;
获取挂载在所述文本指示节点下的所述原HTML代码片段。
7.一种处理HTML代码片段的装置,其特征在于,所述装置包括:
第一获取模块,被配置为获取原HTML代码片段;
第二获取模块,被配置为获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
第一处理模块,被配置为根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
8.根据权利要求7所述的装置,其特征在于,所述第一处理模块,包括:
第一判断子模块,被配置为判断当前节点是否为所述text节点;
第二判断子模块,被配置为若所述当前节点为text节点,根据所述当前节点对应的子节点信息,判断所述当前节点下是否挂载文本子节点;
移除子模块,被配置为若所述当前节点下挂载所述文本子节点,移除所述当前节点,将所述文本子节点挂载到所述当前节点的父节点下;
第三判断子模块,被配置为若所述当前节点下未挂载所述文本子节点,根据所述当前节点对应的父节点信息,判断所述父节点是否属于文本节点;
修改子模块,被配置为若所述父节点属于文本节点,将所述当前节点改为span节点。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第一判断模块,被配置为若所述当前节点不为text节点,判断所述当前节点的节点类型与预设节点类型是否匹配,所述预设节点类型包括以下至少一项:非原生类型、非文本类型;
移除模块,被配置为若所述当前节点的所述节点类型与所述预设节点类型匹配,移除所述当前节点;
第二判断模块,被配置为判断所述当前节点下是否挂载子节点;
第二处理模块,被配置为若所述当前节点下挂载所述子节点,根据所述当前节点的所述节点类型,对所述子节点进行处理。
10.根据权利要求9所述的装置,其特征在于,所述第二处理模块,包括:
挂载子模块,被配置为若所述节点类型为所述非原生类型,将所述当前节点下挂载的子节点挂载到所述当前节点的父节点下;或者,
删除子模块,被配置为若所述节点类型为所述非文本类型,删除所述当前节点下挂载的所述子节点。
11.根据权利要求7所述的装置,其特征在于,所述第一获取模块,包括:
第一获取子模块,被配置为获取原HTML代码集合;
第二获取子模块,被配置为从所述原HTML代码集合中,获取用于编写文本信息的所述原HTML代码片段;
所述装置还包括:
替换模块,被配置为在所述生成新HTML代码片段之后,使用所述新HTML代码片段,替换所述原HTML代码集合中的所述原HTML代码片段,生成新HTML代码集合。
12.根据权利要求11所述的装置,其特征在于,所述第二获取子模块,包括:
识别单元,被配置为识别所述原HTML代码集合中的文本指示节点;
获取单元,被配置为获取挂载在所述文本指示节点下的所述原HTML代码片段。
13.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~6任一所述方法的步骤。
14.一种处理HTML代码片段的装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取原HTML代码片段;
获取所述原HTML代码片段中各text节点所挂载的相关节点的节点信息;
根据所述节点信息,对所述原HTML代码片段进行处理,生成新HTML代码片段,所述新HTML代码片段中不包括所述text节点下挂载所述text节点的结构。
CN201811593690.0A 2018-12-25 2018-12-25 处理html代码片段的方法及装置 Pending CN109683906A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811593690.0A CN109683906A (zh) 2018-12-25 2018-12-25 处理html代码片段的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811593690.0A CN109683906A (zh) 2018-12-25 2018-12-25 处理html代码片段的方法及装置

Publications (1)

Publication Number Publication Date
CN109683906A true CN109683906A (zh) 2019-04-26

Family

ID=66189331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811593690.0A Pending CN109683906A (zh) 2018-12-25 2018-12-25 处理html代码片段的方法及装置

Country Status (1)

Country Link
CN (1) CN109683906A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111638907A (zh) * 2020-04-20 2020-09-08 北京达佳互联信息技术有限公司 第三方代码片段的替换方法、装置、终端及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192217A (zh) * 2006-11-28 2008-06-04 阿里巴巴公司 消除超文本标记语言中有害代码的方法
CN101251855A (zh) * 2008-03-27 2008-08-27 腾讯科技(深圳)有限公司 一种互联网网页清洗方法、系统及设备
CN102361484A (zh) * 2011-07-05 2012-02-22 上海交通大学 被动网络性能测量系统及其页面识别方法
CN105426172A (zh) * 2015-10-30 2016-03-23 北京金海明天软件技术有限公司 基于xml解析技术和模板语言的动态web页面生成方法
CN106354749A (zh) * 2016-08-15 2017-01-25 北京小米移动软件有限公司 信息显示方法及装置
CN106951451A (zh) * 2017-02-22 2017-07-14 北京麒麟合盛网络技术有限公司 一种网页内容提取方法、装置及计算设备
CN107423391A (zh) * 2017-07-24 2017-12-01 福州大学 网页结构化数据的信息提取方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192217A (zh) * 2006-11-28 2008-06-04 阿里巴巴公司 消除超文本标记语言中有害代码的方法
CN101251855A (zh) * 2008-03-27 2008-08-27 腾讯科技(深圳)有限公司 一种互联网网页清洗方法、系统及设备
CN102361484A (zh) * 2011-07-05 2012-02-22 上海交通大学 被动网络性能测量系统及其页面识别方法
CN105426172A (zh) * 2015-10-30 2016-03-23 北京金海明天软件技术有限公司 基于xml解析技术和模板语言的动态web页面生成方法
CN106354749A (zh) * 2016-08-15 2017-01-25 北京小米移动软件有限公司 信息显示方法及装置
CN106951451A (zh) * 2017-02-22 2017-07-14 北京麒麟合盛网络技术有限公司 一种网页内容提取方法、装置及计算设备
CN107423391A (zh) * 2017-07-24 2017-12-01 福州大学 网页结构化数据的信息提取方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WEIXIN_34306593: "快应用的开发注意点", 《HTTPS://BLOG.CSDN.NET/WEIXIN_34306593/ARTICLE/DETAILS/88685004》 *
ZHOUYU: "domUtils.js", 《HTTPS://GITHUB.COM/FISH-ZHOU/SZLWIKI/BLOB/0BB0094D1B759DD3F1C246916BE5CE5610383376/GZSZLWIKI/WEBROOT/UEDITOR/_SRC/CORE/DOM/DOMUTILS.JS》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111638907A (zh) * 2020-04-20 2020-09-08 北京达佳互联信息技术有限公司 第三方代码片段的替换方法、装置、终端及存储介质

Similar Documents

Publication Publication Date Title
US20210133459A1 (en) Video recording method and apparatus, device, and readable storage medium
CN105488112B (zh) 信息推送方法及装置
CN105224462B (zh) 控件元素的识别方法和装置
CN104035995B (zh) 群标签生成方法及装置
CN104486451B (zh) 应用程序推荐方法及装置
CN104636164B (zh) 启动页面生成方法及装置
CN107430480A (zh) 电子设备和在电子设备中处理信息的方法
CN109429102A (zh) 用于显示应用的电子装置及其操作方法
CN107423106A (zh) 支持多框架语法的方法和装置
CN106101629A (zh) 输出图像的方法及装置
CN104461348B (zh) 信息选取方法及装置
CN106202223A (zh) 内容收藏方法、装置和用于收藏应用程序中内容的装置
CN105320402B (zh) 管理数据的方法和用于处理该方法的电子设备
CN108509412A (zh) 一种数据处理方法、装置、电子设备以及存储介质
CN104079964B (zh) 传输视频信息的方法及装置
CN106789551B (zh) 会话消息展示方法及装置
CN108958503A (zh) 输入方法和装置
CN105354284B (zh) 模板的处理方法及装置、短信识别方法及装置
CN108495168A (zh) 弹幕信息的显示方法及装置
CN106503131A (zh) 获取兴趣信息的方法及装置
CN110399934A (zh) 一种视频分类方法、装置及电子设备
CN108491282A (zh) 网页和操作系统进行通信的方法和装置
CN109558553A (zh) 样式确定方法及装置
CN113032627A (zh) 视频分类方法、装置、存储介质及终端设备
CN109683906A (zh) 处理html代码片段的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190426

RJ01 Rejection of invention patent application after publication