CN103745003B - Html片段的检测方法 - Google Patents
Html片段的检测方法 Download PDFInfo
- Publication number
- CN103745003B CN103745003B CN201410035578.0A CN201410035578A CN103745003B CN 103745003 B CN103745003 B CN 103745003B CN 201410035578 A CN201410035578 A CN 201410035578A CN 103745003 B CN103745003 B CN 103745003B
- Authority
- CN
- China
- Prior art keywords
- label
- value
- execution step
- tag
- judge
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
- G06F16/986—Document structures and storage, e.g. HTML extensions
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请公开了HTML片段的检测方法,该方法中利用专门的单标签参数S来记录当前检测位置之前最近的一个单标签,利用集合Z来记录当前已遍历到的但未匹配的所有开始标签,基于这些参数进行标签的匹配,并且,在检测到结束标签时,优先将其与最近一次检测到的单标签进行匹配,在无法匹配的情况下再进行双标签的匹配,在检测到错误时进行具体错误及错误位置的通知。本发明既可以对HTML片段中的单、双标签进行准确识别,同时还兼容由单标签与结束标签组成的双标签的格式,因此,采用本发明可以有效提高检测的准确度,并能对错误进行准确定位。
Description
技术领域
本发明涉及计算机互联网技术,特别是涉及一种超文本标记语言(HTML)片段的检测方法。
背景技术
在所见即所得的应用场景中,最常见的一个组件就是富文本编辑器。富文本编辑器提供了两种使用方式,其中一种使用方式是源码方式,该方式下需要用户手动输入HTML片段,进而进行渲染。此过程中浏览器需要对用户输入的HTML片段进行智能检测,以确保其符合HTML规范要求。
现有的HTML片段的检测方法,主要是检测HTML代码片段标签是否成对出现。首先收集HTML代码片段中所有的标签,包括开始标签和结束标签,然后按照一定的方式匹配从而检测是否匹配,比如计算同一标签的开始标签和结束标签的个数等。
上述方法存在如下问题:
1、功能单一、准确性低:该方法仅进行双标签的检测,即标签必须成对出现,有开始标签必须有相应的结束标签,而实际的HTML规范要求中是允许单标签的存在的,即一个单标签可以独立存在。因此,这种只检测双标签的方法会导致单标签被检测为错误的情况出现,从而无法正确识别单标签,降低检测的准确性,进而会导致浏览器不能准确显示用户需要的渲染效果。
2、对错误的定位能力弱:在进行检测后,仅能提示标签成对不匹配,不能给出详细的错误原因及错误标签,因此无法帮助用户快速定位到错误点以进行错误排查、解决问题。
发明内容
有鉴于此,本发明的主要目的在于提供一种HTML片段的检测方法,该方法可以提高HTML片段检测的准确度,并能对错误进行准确定位。
为了达到上述目的,本发明提出的技术方案为:
一种HTML片段的检测方法,包括:
a、将需要检测的HTML片段的首个标签作为当前的待检测标签;将单标签参数S的初始值设置为空;将用于记录当前未匹配的开始标签的集合Z设置为空;
b、判断当前的待检测标签M是否为空,如果是,则执行步骤c;否则,执行步骤d;
c、判断所述集合Z是否为空,如果是,则结束所述检测方法;否则,判定所述集合Z中的所有开始标签没有对应的结束标签并且通知系统,结束所述检测方法;
d、判断所述M是否为单标签,如果是,则将当前的单标签参数S的值设置为所述M的值,执行步骤g;否则,判断所述M是否为开始标签,如果是,则将所述M置入所述集合Z中,将所述S的值设置为空,执行步骤g,否则,执行步骤e;
e、判断所述S的值是否等于所述M的值,如果是,则将所述S的值设置为空,执行步骤g;否则,将所述S的值设置为空,执行步骤f;
f、判断所述集合Z是否为空,如果是,则判定所述M处存在多余的结束标签并通知系统,结束所述检测方法;否则,取出最后进入所述集合Z的标签N,将所述标签N从所述集合中删除,判断所述N与所述M的值是否相等,如果是,则执行步骤g,否则,判定所述M处没有与所述N对应的结束标签并通知系统,结束所述检测方法;
g、将所述HTML片段中所述M之后的下一个标签作为当前的待检测标签,执行所述步骤b。
一种HTML片段的检测方法,包括:
a、将需要检测的HTML片段的首个标签作为当前的待检测标签;将单标签参数S的初始值设置为空;将用于记录当前未匹配的开始标签的集合Z设置为空;
b、判断当前的待检测标签M是否为空,如果是,则执行步骤c;否则,执行步骤d;
c、判断所述集合Z是否为空,如果是,则结束所述检测方法;否则,按照进入集合的顺序的逆序,依次为所述集合Z中的每个标签,构造对应的结束标签并置于所述HTML片段的尾部,结束所述检测方法;
d、判断所述M是否为单标签,如果是,则将当前的单标签参数S的值设置为所述M的值,执行步骤g;否则,判断所述M是否为开始标签,如果是,则将所述M置入所述集合Z中,将所述S的值设置为空,执行步骤g,否则,执行步骤e;
e、判断所述S的值是否等于所述M的值,如果是,则将所述S的值设置为空,执行步骤g;否则,执行步骤f;
f、判断所述集合Z是否为空,如果是,则将所述M从所述HTML片段中删除,执行步骤g;否则,将所述S的值设置为空,取出最后进入所述集合Z的标签N,将所述标签N从所述集合中删除,当所述N与所述M的值相等时,执行步骤g;当所述N与所述M的值不相等时,构造所述N对应的结束标签,并将所构造的标签插入至所述M所在的位置,作为所述M的在前相邻标签,将所述M作为当前的待检测标签,执行步骤b;
g、将所述HTML片段中所述M之后的下一个标签作为当前的待检测标签,执行步骤b。
综上所述,本发明提出的HTML片段的检测方法,考虑了对HTML片段中单标签的识别,利用专门的单标签参数S来记录当前检测位置之前最近的一个单标签,利用集合Z来记录当前已遍历到的但未匹配的所有开始标签,基于这些参数进行标签的匹配,并且,在检测到结束标签时,优先将其与最近一次检测到的单标签进行匹配,在无法匹配的情况下再进行双标签的匹配,在检测到错误时进行具体错误及错误位置的通知。如此,既可以对HTML片段中的单、双标签进行准确识别,同时还兼容由单标签与结束标签组成的双标签的格式,因此,可以有效提高检测的准确度,且能对错误进行准确定位。
附图说明
图1为本发明实施例一的流程示意图;
图2为本发明实施例二的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
本发明的核心思想是:对HTML片段中的单标签进行识别,并在检测到结束标签时优先将其与最近一次检测到的单标签进行匹配,若无法匹配再进行双标签的匹配,另外,利用集合Z来保存当前未匹配的所有开始标签,如此,既可以对HTML片段中的单、双标签进行准确识别,同时还兼容由单标签与结束标签组成的双标签的格式,因此,可以有效提高检测的准确度。
图1为本发明实施例一的HTML片段检测方法流程示意图,如图1所示,该实施例主要包括:
步骤101、将需要检测的HTML片段的首个标签作为当前的待检测标签;将单标签参数S的初始值设置为空;将用于记录当前未匹配的开始标签的集合Z设置为空。
本步骤,用于实现检测的初始化过程。这里,所述单标签参数S用于记录最近一次检测到的单标签,即当前检测位置之前最近的一个单标签,以便在检测到结束标签时,会优先考虑其是否与最近的单标签匹配,以实现对由单标签与结束标签组成的双标签的格式即<label></label>格式的兼容。
集合Z则用于记录当前未匹配的开始标签,以便在遇到结束标签时,据此进行结束标签的匹配,以实现双标签的检测。
步骤102、判断当前的待检测标签M是否为空,如果是,则执行步骤103;否则,执行步骤105。
这里,如果当前的待检测标签M为空,则说明已经检测到了HTML片段尾部,即遍历了该片段中的所有标签,此时,需要转入步骤103,以判断当前是否存在没有匹配的开始标签,进而据此判断是否存在丢失结束标签的情况。
步骤103~104、判断所述集合Z是否为空,如果是,则结束所述检测方法;否则,判定所述集合Z中的所有开始标签没有对应的结束标签并且通知系统,结束所述检测方法。
本步骤中,如果集合Z不为空,则说明当前已遍历的开始标签中存在没有匹配到结束标签的标签,而此时已遍历完HTML片段,因此,可以确定当前出现了错误,即判定所述集合Z中的所有开始标签没有对应的结束标签,此时需要将该错误通知给系统,具体为返回所述集合Z中的所有开始标签,并指示出这些标签没有对应的结束标签。
如果集合Z为空,则说明HTML片段中不存在错误问题。
步骤105~108、判断所述M是否为单标签,如果是,则将当前的单标签参数S的值设置为所述M的值,执行步骤117;否则,判断所述M是否为开始标签,如果是,则将所述M置入所述集合Z中,将所述S的值设置为空,执行步骤117,否则,执行步骤109。
这里,在判断出M为开始标签时,说明当前S记录的单标签之后的下一个标签为开始标签而不是结束标签,此种情况下,不需要再将S所指示单标签与后面的结束标签进行匹配了,因此,需要将其值设置为空。
本步骤中,单标签的具体判断方法同现有系统,即将其与系统所规定的单标签进行匹配,如果匹配上,则说明是单标签。
根据现有规范,开始标签与结束标签的区分是由标签名前是否有“/”字符进行判断,如<div>和</span>标签,其中第一个标签为开始标签,标签名为div,第二个为结束标签,标签名为span。
本步骤中,在M非空的情况下,需要首先判断该标签是不是单标签,如果是,则利用参数S记录该标签,如果不是,则确定该标签是否为开始标签,如果是开始标签,则将该标签置入集合Z中,以便在后续的检测过程中检测到结束标签时,基于此,进行双标签的匹配;如果不是开始标签,则说明是结束标签,此时需要进入步骤109执行相应的标签匹配过程。
步骤109~111、判断所述S的值是否等于所述M的值,如果是,则将所述S的值设置为空,执行步骤117;否则,将所述S的值设置为空,执行步骤112。
本步骤中,当所述S的值等于所述M的值时,说明当前的结束标签M与最近一次检测到的单标签相匹配,M处不存在错误,从而完成当前检测到的标签M的匹配,因此可以将所述S的值设置为空后执行步骤117,继续下一标签的匹配过程。
当所述S的值不等于所述M的值时,则需要将所述S的值设置为空后执行步骤112~116,分情况判断是否存在结束标签多余或丢失的错误。
步骤112~116、判断所述集合Z是否为空,如果是,则判定所述M处存在多余的结束标签并通知系统,结束所述检测方法;否则,取出最后进入所述集合Z的标签N,将所述标签N从所述集合中删除,判断所述N与所述M的值是否相等,如果是,则执行步骤117,否则,判定所述M处没有与所述N对应的结束标签并通知系统,结束所述检测方法。
本步骤中,当集合Z为空时,说明在所述M之前不存在与之相匹配的开始标签了,因此,可以判定标签M为多余的结束标签,而当集合Z不为空时,则取出最后加入该集合的标签N,判断N与M的值是否相同,即判断是不是匹配,如果相同,则说明匹配,此时执行步骤117进行下一标签的检测;如果不同,则说明N没有对应的结束标签,因此需要将该问题通知给系统,即,返回M处没有与所述N对应的结束标签的错误信息,以便用户据此进行相应的修改。
步骤117、将所述HTML片段中所述M之后的下一个标签作为当前的待检测标签,执行步骤102。
本步骤,用于对待检测标签进行更新,即将所述M之后的下一个标签作为新的待检测标签,以遍历所述HTML片段中的标签进行相应的检测。
较佳地,在具体实现上述实施例时,所述集合Z可以采用栈的方式实现,当然也不限于其他形式的数据结构,在此不再赘述。
从上述实施例中,可以看出本发明通过区分单标签和双标签,可以准确地检测出HTML片段中出现的丢失或多余结束标签的错误。当检测到一处错误时,便进行该错误的提示,即返回相应的错误定位信息和错误类型,以供用户基于此进行相应的修改。在实际应用中,还可以在检测到错误时,由检测方案自动进行相应的错误纠正,使检测方案具有智能容错功能。具体可以采用下述实施例二的方案实现这一目的。
图2为本发明实施例二的HTML片段检测方法流程示意图,如图2所示,该实施例主要包括:
步骤201、将需要检测的HTML片段的首个标签作为当前的待检测标签;将单标签参数S的初始值设置为空;将用于记录当前未匹配的开始标签的集合Z设置为空。
本步骤同步骤101,在此不再赘述。
步骤202、判断当前的待检测标签M是否为空,如果是,则执行步骤203;否则,执行步骤205。
203~204、判断所述集合Z是否为空,如果是,则结束所述检测方法;否则,按照进入集合的顺序的逆序,依次为所述集合Z中的每个标签,构造对应的结束标签并置于所述HTML片段的尾部,结束所述检测方法。
本步骤与前述实施例所不同的是,在检测到存在开始标签没有结束标签的情况时,为这些开始标签分别构造对应的结束标签后依次置于HTML片段的尾部,以实现相应的智能纠错的功能。
步骤205~208、判断所述M是否为单标签,如果是,则将当前的单标签参数S的值设置为所述M的值,执行步骤216;否则,判断所述M是否为开始标签,如果是,则将所述M置入所述集合Z中,将所述S的值设置为空,执行步骤216,否则,执行步骤209。
这里,在判断出M为开始标签时,说明S中的单标签后的下一个标签为开始标签,此种情况下,不需要再将S所指示单标签与后面的结束标签进行匹配了,因此,需要将其值设置为空。
步骤209~210、判断所述S的值是否等于所述M的值,如果是,则将所述S的值设置为空,执行步骤216;否则,执行步骤211。
步骤211~215、判断所述集合Z是否为空,如果是,则将所述M从所述HTML片段中删除,执行步骤216;否则,将所述S的值设置为空,取出最后进入所述集合Z的标签N,将所述标签N从所述集合中删除,当所述N与所述M的值相等时,执行步骤216,当所述N与所述M的值不相等时,构造所述N对应的结束标签,并将所构造的标签插入至所述M所在的位置,作为所述M的在前相邻标签,将所述M作为当前的待检测标签,执行步骤202。
本步骤与前述实施例所不同的是,在判断出存在多余的结束标签时将其删除,在判断出存在丢失结束标签时,构造相应的结束标签并插入在当前的检测位置的前面,以实现相应的智能纠错的功能。
步骤216、将所述HTML片段中所述M之后的下一个标签作为当前的待检测标签,执行步骤202。
较佳地,同上述实施例一,所述集合Z可以采用栈的方式实现。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种HTML片段的检测方法,其特征在于,包括:
a、将需要检测的HTML片段的首个标签作为当前的待检测标签;将单标签参数S的初始值设置为空;将用于记录当前未匹配的开始标签的集合Z设置为空;
b、判断当前的待检测标签M是否为空,如果是,则执行步骤c;否则,执行步骤d;
c、判断所述集合Z是否为空,如果是,则结束所述检测方法;否则,判定所述集合Z中的所有开始标签没有对应的结束标签并且通知系统,结束所述检测方法;
d、判断所述M是否为单标签,如果是,则将当前的单标签参数S的值设置为所述M的值,执行步骤g;否则,判断所述M是否为开始标签,如果是,则将所述M置入所述集合Z中,将所述S的值设置为空,执行步骤g,否则,执行步骤e;
e、判断所述S的值是否等于所述M的值,如果是,则将所述S的值设置为空,执行步骤g;否则,将所述S的值设置为空,执行步骤f;
f、判断所述集合Z是否为空,如果是,则判定所述M处存在多余的结束标签并通知系统,结束所述检测方法;否则,取出最后进入所述集合Z的标签N,将所述标签N从所述集合中删除,判断所述N与所述M的值是否相等,如果是,则执行步骤g,否则,判定所述M处没有与所述N对应的结束标签并通知系统,结束所述检测方法;
g、将所述HTML片段中所述M之后的下一个标签作为当前的待检测标签,执行所述步骤b。
2.根据权利要求1所述的方法,其特征在于,所述集合Z采用栈的方式实现。
3.一种HTML片段的检测方法,其特征在于,包括:
a、将需要检测的HTML片段的首个标签作为当前的待检测标签;将单标签参数S的初始值设置为空;将用于记录当前未匹配的开始标签的集合Z设置为空;
b、判断当前的待检测标签M是否为空,如果是,则执行步骤c;否则,执行步骤d;
c、判断所述集合Z是否为空,如果是,则结束所述检测方法;否则,按照进入集合的顺序的逆序,依次为所述集合Z中的每个标签,构造对应的结束标签并置于所述HTML片段的尾部,结束所述检测方法;
d、判断所述M是否为单标签,如果是,则将当前的单标签参数S的值设置为所述M的值,执行步骤g;否则,判断所述M是否为开始标签,如果是,则将所述M置入所述集合Z中,将所述S的值设置为空,执行步骤g,否则,执行步骤e;
e、判断所述S的值是否等于所述M的值,如果是,则将所述S的值设置为空,执行步骤g;否则,执行步骤f;
f、判断所述集合Z是否为空,如果是,则将所述M从所述HTML片段中删除,执行步骤g;否则,将所述S的值设置为空,取出最后进入所述集合Z的标签N,将所述标签N从所述集合中删除,当所述N与所述M的值相等时,执行步骤g;当所述N与所述M的值不相等时,构造所述N对应的结束标签,并将所构造的标签插入至所述M所在的位置,作为所述M的在前相邻标签,将所述M作为当前的待检测标签,执行步骤b;
g、将所述HTML片段中所述M之后的下一个标签作为当前的待检测标签,执行步骤b。
4.根据权利要求3所述的方法,其特征在于,所述集合Z采用栈的方式实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410035578.0A CN103745003B (zh) | 2014-01-24 | 2014-01-24 | Html片段的检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410035578.0A CN103745003B (zh) | 2014-01-24 | 2014-01-24 | Html片段的检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103745003A CN103745003A (zh) | 2014-04-23 |
CN103745003B true CN103745003B (zh) | 2017-01-25 |
Family
ID=50502021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410035578.0A Active CN103745003B (zh) | 2014-01-24 | 2014-01-24 | Html片段的检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103745003B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104408208A (zh) * | 2014-12-22 | 2015-03-11 | 上海斐讯数据通信技术有限公司 | 一种html5布局检测方法及系统 |
CN110795931B (zh) * | 2018-07-17 | 2022-10-21 | 福建天泉教育科技有限公司 | 一种web网站页面语言的检测方法及终端 |
CN111859850B (zh) * | 2020-07-29 | 2024-05-10 | 厦门亿联网络技术股份有限公司 | 富文本片段整体化的方法、装置、电子设备及存储介质 |
CN111967274B (zh) * | 2020-08-25 | 2024-05-31 | 文思海辉智科科技有限公司 | 标签转换处理方法、装置、电子设备及可读存储介质 |
-
2014
- 2014-01-24 CN CN201410035578.0A patent/CN103745003B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103745003A (zh) | 2014-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103745003B (zh) | Html片段的检测方法 | |
US11769111B2 (en) | Probabilistic language models for identifying sequential reading order of discontinuous text segments | |
US10650192B2 (en) | Method and device for recognizing domain named entity | |
KR101114194B1 (ko) | 보조된 서식 채우기 | |
CN102243699B (zh) | 一种恶意代码检测方法及系统 | |
US10423474B2 (en) | Performing diagnostic tracing of an executing application to identify suspicious pointer values | |
US20130332905A1 (en) | Test code generation based on test documentation | |
US20100329573A1 (en) | Display test device, display test method, and storage medium | |
EP1605709A3 (en) | Method and system for validating configuration data in a private branch exchange switch | |
US20130290933A1 (en) | Translation verification testing | |
CN108205760A (zh) | 广告投放的方法、插件及浏览器 | |
CN107679051A (zh) | 交易系统错误检测方法和装置 | |
CN101751530A (zh) | 检测漏洞攻击行为的方法及设备 | |
JP2013544395A (ja) | 双方向テキストチェッカー | |
US10108590B2 (en) | Comparing markup language files | |
CN104320793B (zh) | 一种手机短信自动化测试方法及系统 | |
US9558101B2 (en) | Preprocessor directive symbol analyzer devices and methods | |
CN114710224A (zh) | 帧同步方法及装置、计算机可读介质、电子设备 | |
US20100122234A1 (en) | System and method for reconciling software source code | |
US20120166933A1 (en) | Verifying page layout automatically | |
CN103488460A (zh) | 自动标记源代码的系统和方法 | |
CN103984633B (zh) | 一种银行主机下传作业的自动化测试系统 | |
CN107203562B (zh) | 自动化检查方法、装置和计算机可读存储介质 | |
CN103838666B (zh) | 一种确定代码执行覆盖率的方法和装置 | |
CN110688823A (zh) | Xml文件验证方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |