CN108959095A - 基于XML Schema验证XML文档的方法 - Google Patents

基于XML Schema验证XML文档的方法 Download PDF

Info

Publication number
CN108959095A
CN108959095A CN201810762652.7A CN201810762652A CN108959095A CN 108959095 A CN108959095 A CN 108959095A CN 201810762652 A CN201810762652 A CN 201810762652A CN 108959095 A CN108959095 A CN 108959095A
Authority
CN
China
Prior art keywords
error
node
document
error message
xml
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.)
Granted
Application number
CN201810762652.7A
Other languages
English (en)
Other versions
CN108959095B (zh
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.)
COMPUTER APPLICATION INST CHINA ENGINEERING PHYSICS ACADEMY
Original Assignee
COMPUTER APPLICATION INST CHINA ENGINEERING PHYSICS ACADEMY
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 COMPUTER APPLICATION INST CHINA ENGINEERING PHYSICS ACADEMY filed Critical COMPUTER APPLICATION INST CHINA ENGINEERING PHYSICS ACADEMY
Priority to CN201810762652.7A priority Critical patent/CN108959095B/zh
Publication of CN108959095A publication Critical patent/CN108959095A/zh
Application granted granted Critical
Publication of CN108959095B publication Critical patent/CN108959095B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Document Processing Apparatus (AREA)

Abstract

本发明公开了一种基于XML Schema验证XML文档的方法,包括:S1,Java语言实现DOM编程接口,解析XML文档以获取相应的解析文档DOMdoc;S2,对解析文档DOMdoc进行完整性校验,以判断其是否存在语法错误;S3,输出错误信息;S4,定义错误位置追踪函数。本发明提供一种基于XML Schema验证XML文档的方法,其能够基于XML Schema验证XML文档语法正确性之外,在具体的应用中还支持错误信息输出和错误信息追踪,方便数据编辑人员了解错误原因和快速找到语法出错位置,以便对语法错误做出准确快速的修改。

Description

基于XML Schema验证XML文档的方法
技术领域
本发明涉及一种在软件设计情况下使用的方法。更具体地说,本发明涉及一种用在软件设计情况下的基于XML Schema验证XML的方法。
背景技术
XML(eXtensible Markup Language)是一种数据描述和交换的通用格式,并已在Internet上和企业内部得到了广泛应用。由于XML的通用性和可交换性,在武器装备综合保障领域XML被广泛用于描述综合保障数据。对于已编辑的XML文档,在其应用到综合保障***或其它应用领域之前,需要依据其设计文档对其进行语法正确性验证。验证正确的XML文档才能应用到相关领域。
XML Schema是W3C Recommendation推荐的标准,是XML应用的基础。XML Schema可以用于设计、约束和验证XML文档。XML Schema文档中明确定义了XML文档中元素的应用规则,比如元素的名称、具有的属性、出现次序、出现次数、数据类型、父元素、子元素等等。因此已编辑XML文档经过XML Schema文档验证正确后才能达到XML文档的设计要求,才能够将XML文档应用到武器装备综合保障***或其它应用领域中。
而现有的专利技术,只能实现基于XML Schema对XML文档的正确性做出验证,对于具体的错误信息则输出比较模糊,也不支持在实际应用中的语法错误追踪,故在应用中存在缺陷,不利于其进一步的设计和拓展优化。
发明内容
本发明的一个目的是解决至少上述问题和/或缺陷,并提供至少后面将说明的优点。
本发明还有一个目的是提供一种基于XML Schema验证XML文档的方法,其能够基于XML Schema验证XML文档语法正确性之外,在具体的应用中还支持错误信息输出和错误信息追踪,方便数据编辑人员了解错误原因和快速找到语法出错位置,以便对语法错误做出准确快速的修改。
为了实现根据本发明的这些目的和其它优点,提供了一种基于XML Schema验证XML文档的方法,包括:
S1,Java语言实现DOM编程接口,解析XML文档以获取相应的解析文档DOMdoc;
S2,对解析文档DOMdoc进行完整性校验,以判断其是否存在语法错误;
S3,输出错误信息;
S4,定义错误位置追踪函数;
其中,所述追踪函数依据鼠标点击位置确定错误信息,并在DOMdoc中找到该条错误信息对应的节点,并以不同于其他节点的方式显示该节点,具体实施方式取决于DOMdoc文档的显示方式。
优选的是,其中,在S1中,还需要定义错误类Error以及相关变量;
其中,相关变量的定义包括:
一个用于保存错误信息的String类型变量content,其初始值被配置为空字符串;
另一个用于保存为XML文档中存在的语法错误创建的ArrayList<Error>类型的变量errors;
所述Error的建立包括:
定义一个Node类型变量,一个int类型变量;
在Error中定义构造函数以及对应的两个传入参数,其中一个传入参数为Node类型,以DOMdoc中存在语法错误的节点相对应,另一个传入参数为int类型,以与content变量表示的字符串长度相对应;
在构造函数中为Node类型变量及int类型变量定义相关的赋值语句。
优选的是,其中,在S1中,所述XML文档的解析方式被配置为采用DOM(DocumentObject Model)方式进行解析,且所述解析文档类型为Document类型;
对解析文档DOMdoc进行拷贝以得到克隆后的解析文档docClone;
所述docClone通过DOMdoc调用cloneNode(true)方法以获取。
优选的是,其中,在S2中还需要定义错误处理类handleError,以通过所述handleError实现DOMErrorHandler接口,并在handleError中定义错误处理函数;
获取docClone的DOMConfiguration对象,并为该对象设置相关参数;
其中,错误处理函数的定义过程包括:
S21,在错误处理函数有一个DOMError类型的传入参数err;
S22,定义一个DOMLocator类型的变量loc,并将err调用getLocation()方法获取的值赋值给loc;
S23,将语法错误实例化为Error对象,并保存在errors变量中,以备进行错误信息追踪;
S24,判断语法错误类型;
S25,更新错误信息,以备将错误信息输出。
优选的是,其中,在S23中,将语法错误实例化Error对象的过程包括:
S231,依据docClone文档的语法错误节点在DOMdoc中找到对应节点node;
S232,调用Error类的构造函数并将node和content.length()作为传入参数,获取Error对象;
在S24中,语法错误包括DOMError.SERITY_WARNING,DOMError.SERITY_ERROR,DOMError.SERITY_FATAL_ERROR三种类型,err通过调用getSerivity()方法以获取当前语法错误类型,并依据错误类型更新content;
且在S24中,err通过调用getMessage方法获取错误信息,并将错误信息更新到content。
优选的是,其中,在S3中,错误信息输出被配置为采用文本形式或信息输出面板的方式用;
其中,在GUI编程中定义一个JFrame,以在JFrame中嵌入一个JEditorPane,进而通过JEditorPane调用setText()方法,将保存错误信息的content作为JEditorPane的内容,配合错误追踪函数实现错误位置追踪。
优选的是,其中,在S4中,错误位置追踪函数是一个JEditorPane的鼠标点击事件函数,当鼠标点击在JEditorPane上输出的错误信息时,实现依据错误信息追踪语法错误位置。
优选的是,其中,鼠标点击事件函数定义过程为:
S41,函数有一个MouseEvent类型的传入参数为e;
S42,在鼠标点击事件函数中定义三个int类型变量position,p1,p2,以及一个Node类型变量node;
S43,依据相关变量确定鼠标点击的错误信息,并将errors变量中对应于错误信息的error对象给相关变量进行赋值;
S44,在JEditorPane上依据相关变量选中该条错误信息;
S45,依据相关变量值在DOMdoc中找到存在语法错误的节点。
优选的是,其中,在S42中,position对应于鼠标在JEditorPane的点击位置,取值由JEditorPane调用viewToModel(e.getPoint())方法获取;
p1和p2的初始值为0;
node的初始值为null。
优选的是,其中,在S44中,在JEditorPane上依据相关变量选中该条错误信息的过程包括:
S441,判断p2==0是否为真,若为真,则将content变量表示的字符串的长度值赋值给p2;
S442,JEditorPane调用setCartPosition(p1)、moveCartPosition(p2)方法,以选中JEditorPane上鼠标点击位置处的错误信息;
在S45中,S43中获取的node为鼠标点击选中的语法错误信息所对应的节点,在DOMdoc中找到该节点并以不同于其他节点的方式显示该节点。
本发明至少包括以下有益效果:其一,在XML文档中存在语法错误时,能够将错误信息分条输出,便于对不同错误进行区分。
其二,在实际应用中,支持错误信息追踪,即能够通过点击语法错误信息快速找到错误位置。
本发明的其它优点、目标和特征将部分通过下面的说明体现,部分还将通过对本发明的研究和实践而为本领域的技术人员所理解。
附图说明
图1为本发明的基于XML Schema验证XML方法的流程示意图;
图2为本发明的基于DOM解析XML文档并获得解析文档的克隆文档的流程示意图;
图3为本发明的判断错误类型的流程示意图;
图4为本发明的依据克隆文档语法错误节点在XML解析文档中查找对应节点的流程示意图。
具体实施方式
下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
应当理解,本文所使用的诸如“具有”、“包含”以及“包括”术语并不配出一个或多个其它元件或其组合的存在或添加。
根据本发明的一种基于XML Schema验证XML文档的方法实现形式,包括:
S1,Java语言实现DOM编程接口,解析XML文档以获取相应的解析文档DOMdoc,首先对已有XML文档通过Java语言实现DOM编程接口,以获取解析器实例,然后以XML文件的URL路径为传出参数,通过解析器实例调用相关方法解析XML文件,获取解析文档(为方便后续描述,命名为DOMdoc);
S2,对解析文档DOMdoc进行完整性校验,以判断其是否存在语法错误,XML Schema可以用于设计、约束和验证XML文档,其在现有技术中通过XML Schema文档进行完整性校验;
S3,输出错误信息,通过对校验后的错误信息进行输出,以便于后期进行修改;
S4,定义错误位置的追踪函数;
其中,所述追踪函数依据鼠标点击位置确定错误信息,并在DOMdoc中找到该条错误信息对应的节点,并以不同于其他节点的方式显示该节点,具体实施方式取决于DOMdoc文档的显示方式。其通过追踪函数实现对XML Schema文档中错误信息进行定位,以对相应的错误信息进行修改。
具体来说,图1是基于XML Schema验证XML方法的流程示意图,从图中可以看出:
步骤101、XML文件
步骤102、DOM解析XML文件,获取解析文档(DOMdoc)
首先实现DOM编程接口,获取解析器实例。然后以XML文件的URL路径为传出参数,解析器实例调用相关方法解析XML文件,获取解析文档(为方便后续描述,命名为DOMdoc)。
步骤103、获取DOMdoc克隆文档docClone,获取docClone的DOMConfiguration对象(config)
DOMdoc调用cloneNode()方法获取DOMdoc克隆文档(命名为docClone),docClone调用getDOMConfig()方法获取docClone文档的DOMConfiguration对象。
步骤104、为config设置参数
config对象调用setParameter(String name,Object value)方法,name值为”schema-type”,value值为“http://www.w3.org/2001/XMLSchema”;
config对象调用setParameter(String name,Object value)方法,name值为”schema-location”,value值为XML Schema文档的URL路径;
config对象调用setParameter(String name,Object value)方法,name值为”validate”,value值为true;
config对象调用setParameter(String name,Object value)方法,name值为”error-handler”,value值为handleError的实例化对象;
步骤105、完整性校验
步骤106、判断是否存在语法错误
若存在语法错误,则执行步骤108;若不存在语法错误,则执行步骤107。
步骤107、文件语法正确
XML文档经过XML Schema语法验证,不存在语法错误。
步骤108、错误信息输出
获取语法错误,并输出语法错误信息。
步骤109、错误信息追踪
依据鼠标点击位置确定错误信息,并在DOMdoc中找到该条错误信息对应的节点并以不同于其他节点的方式显示该节点,具体实施方式取决于DOMdoc文档的显示方式。
故采用这种方案其能够基于XML Schema验证XML文档语法正确性之外,在具体的应用中还支持错误信息输出和错误信息追踪,方便数据编辑人员了解错误原因和快速找到语法出错位置,以便对语法错误做出准确快速的修改,具有可实施效果好,可操作性强,适应性好的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,在S1中,还需要定义错误类Error以及相关变量,通过定义的错误类及相关变量的配合,对实现对错误类型及错误信息的分类及输出;
其中,相关变量的定义包括:
一个用于保存错误信息的String类型变量content,其初始值被配置为空字符串;
另一个用于保存为XML文档中存在的语法错误创建的ArrayList<Error>类型的变量errors;
所述Error的建立包括定义两个相应的变量:
定义一个Node类型变量(命名为node),一个int类型变量(命名为p1);
在Error中定义构造函数以及对应的两个传入参数,其中一个传入参数为Node类型,以DOMdoc中存在语法错误的节点相对应,另一个传入参数为int类型,以与content变量表示的字符串长度相对应;
在构造函数中为Node类型变量及int类型变量定义相关的赋值语句,具体来说将Node类型的传入参数赋值给Error类中定义的node变量;将int类型的传入参数赋值给Error类中定义的p1变量。采用这种方案对错误的类型进行分类,并将对应的变量进行定义,以对错误信息进行分类输出,具有可实施效果好,稳定性好的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,在S1中,所述XML文档的解析方式被配置为采用DOM(DocumentObject Model)方式进行解析,且所述解析文档类型为Document类型;
对解析文档DOMdoc进行拷贝以得到克隆后的解析文档docClone,其作用在于对解析后的文档进行拷贝复制,以在进行校验时不损伤原文档的完整度,以防止其在校验或后期操作时对文档造成的损害;
所述docClone通过DOMdoc调用cloneNode(true)方法以获取。
具体来说,图2是本发明的基于DOM解析XML文档并获得解析文档的克隆文档的流程示意图,从图中可以看出克隆文档的过程包括:
步骤201、获取XML文档的URL路径。
步骤202、Java语言实现DOM编程接口并获取解析器实例。
步骤203、解析XML Schema文档,获取解析文档(命名为DOMdoc)。
以XML文档的URL路径作为传入参数,解析器实例调用parse(URL url)方法解析XML文档,将解析结果赋值给Document类型的DOMdoc变量。
步骤204、克隆DOMdoc文档,获取克隆文档(docClone)。
DOMdoc调用cloneNode()方法获取DOMdoc克隆文档,将克隆结果赋值给Document类型的docClone变量。
采用这种方案通过获取XML解析文档并拷贝,然后通过对拷贝后的文档进行完整性校验,以在对其进行校验的同时,保证其原文档的完整和稳定性好,具有可实施效果好,可操作性强,稳定性好的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,在S2中还需要定义错误处理类handleError,以通过所述handleError实现DOMErrorHandler接口,并在handleError中定义错误处理函数;
获取docClone的DOMConfiguration对象,并为该对象设置相关参数;在S2中,docClone通过调用getDomConfig()方法获取其DOMConfiguration对象config;
为config对象设置相关参数的过程包括:
config对象调用setParameter(String name,Object value)方法,name值为”schema-type”,value值为“http://www.w3.org/2001/XMLSchema”;
config对象调用setParameter(String name,Object value)方法,name值为”schema-location”,value值为XML Schema文档的URL路径;
config对象调用setParameter(String name,Object value)方法,name值为”validate”,value值为true;
config对象调用setParameter(String name,Object value)方法,name值为”error-handler”,value值为handleError的实例化对象;
其中,错误处理函数的定义过程包括:
S21,在错误处理函数有一个DOMError类型的传入参数err;
S22,定义一个DOMLocator类型的变量loc,并将err调用getLocation()方法获取的值赋值给loc;
S23,将语法错误实例化为Error对象,并保存在errors变量中,以备进行错误信息追踪;
S24,判断语法错误类型;
S25,更新错误信息,以备将错误信息输出。
具体来说,图3是本发明的判断错误类型的流程示意图,从图中可以看出其包括:
步骤301、获取DOMError实例(err)
为方便描述,将DOMError实例命名为err。
步骤302、获取错误类型
err调用getSeverity()方法获取错误类型。
步骤303、判断错误类型
若错误是“DOMError.SEVERITY_WARNING”类型,则执行步骤304;若错误是“DOMError.SEVERITY_ERROR”类型,则执行步骤305;若错误是“DOMError.SEVERITY_FATAL_ERROR”类型,则执行步骤306。
步骤304、DOMError.SEVERITY_WARNING
错误属于该类型时,执行步骤307。
步骤305、DOMError.SEVERITY_ERROR
错误属于该类型时,执行步骤308。
步骤306、DOMError.SEVERITY_FATAL_ERROR
错误属于该类型时,执行步骤309。
步骤307、更新content,将“warning:”添加到content表示的字符串中。
content表示的字符串存储的是验证过程中发生错误的信息,将“warning:”添加到content,表示该语法错误类型,执行步骤310。
步骤308、更新content,将“error:”添加到content表示的字符串中。
content表示的字符串存储的是验证过程中发生错误的信息,将“error:”添加到content,表示该语法错误类型,执行步骤310。
步骤309、更新content,将“fatal error:”添加到content表示的字符串中。
content表示的字符串存储的是验证过程中发生错误的信息,将“fatal error:”添加到content,表示该语法错误类型,执行步骤310。
步骤310、更新content,获取错误信息并添加到content表示的字符串中err调用getMessage()方法获取该语法错误详细信息,将该信息添加到content中。该信息与上一步在content中更新的内容构成一条完整的语法错误信息。采用这种方案通过对错误处理类的进一步具化,以使其具有更好的适应性,能时地对错误信息的当前状态进行更新,以满足文档验证和后期修改的需要,具有可实施效果好,可操作性强,稳定性好的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,在S23中,将语法错误实例化Error对象的过程包括:
S231,依据docClone文档的语法错误节点在DOMdoc中找到对应节点node;
S232,调用Error类的构造函数并将node和content.length()作为传入参数,获取Error对象;
在S24中,语法错误包括DOMError.SERITY_WARNING,DOMError.SERITY_ERROR,DOMError.SERITY_FATAL_ERROR三种类型,err通过调用getSerivity()方法以获取当前语法错误类型,并依据错误类型更新content;
且在S24中,err通过调用getMessage方法获取错误信息,并将错误信息更新到content。
采用这种方案对错误信息进行获取,并对错误信息的类型进行分类,以使其按照需要进行输出,以便于操作人员进行获取并修改操作,具有可实施效果好,可操作性强,适应性好的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,在S3中,错误信息输出被配置为采用文本形式或信息输出面板的方式用;
其中,在GUI编程中定义一个JFrame,以在JFrame中嵌入一个JEditorPane,进而通过JEditorPane调用setText()方法,将保存错误信息的content作为JEditorPane的内容,配合错误追踪函数实现错误位置追踪。采用这种方案通过对错误信息位置追踪的方式进行具细,以使其实现本发明的目的,具有可实施效果好,可操作性更强的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,在S4中,错误位置追踪函数是一个JEditorPane的鼠标点击事件函数,当鼠标点击在JEditorPane上输出的错误信息时,实现依据错误信息追踪语法错误位置。采用这种方案通过进一步对其错误信息追踪语法错误位置的方式进行具细,以使其具有追踪效果更好,稳定性更好的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,鼠标点击事件函数定义过程为:
S41,函数有一个MouseEvent类型的传入参数为e;
S42,在鼠标点击事件函数中定义三个int类型变量position,p1,p2,以及一个Node类型变量node;
S43,依据相关变量确定鼠标点击的错误信息,并将errors变量中对应于错误信息的error对象给相关变量进行赋值,依据相关变量确定鼠标点击的错误信息并将errors变量中对应于错误信息的error对象给相关变量赋值的步骤为:
S44,在JEditorPane上依据相关变量选中该条错误信息;
S45,依据相关变量值在DOMdoc中找到存在语法错误的节点。
具体来说,图4是本发明的依据克隆文档语法错误节点在XML解析文档中查找对应节点的流程示意图,从图中可以看出:
步骤401、获取docClone中存在语法错误节点(n1);定义一个ArrayList<Integer>类型的变量(num)
DOMError实例err调用getLocation()方法实例化DOMLocator,获取实例化对象,命名为loc。loc调用getRelatedNode()方法获取存在语法错误的节点,命名为n1。执行步骤402。
步骤402、判断(n1!=null&&n1.getNodeType()!=Node.DOCUMENT_NODE)是否为真
若为真,则执行步骤403;若为假则执行步骤404;
步骤403、获取n1的前一个兄弟节点(n2)
n1调用getPreviousSibling()方法获取n1的前一个兄弟节点,命名为n2,执行步骤405。
步骤404、定义一个Node类型的变量(n3,初始值为DOMdoc)
定义一个Node类型的变量,命名为n3,将DOMdoc赋值给n3,执行步骤410。
步骤405、定义一个int类型的变量(i,初始值为0)
定义一个int类型的变量,命名为i,初始值为0,执行步骤406。
步骤406、判断n2是否为空
若为空,则执行步骤407;若不为空,则执行步骤408;
步骤407、添加i到num中
num调用add()方法,将i添加到num中,执行步骤409。
步骤408、变量i自增1,并且用n2的前一个兄弟节点替换n2
n2调用getPreviousSibling()方法获取n2的前一个兄弟节点,并将该节点赋值给n2,执行步骤406。
步骤409、用n1的父节点替换n1
n1调用getParentNode()方法获取n1的父节点,并将其赋值给n1,执行步骤402。
步骤410、定义一个int类型的变量(j,初始值为num.size())
定义一个int类型的变量,命名为j,将num.size()赋值给j,执行步骤411。
步骤411、判断(j>=1)是否为真
若为真,则执行步骤412;若为假,则执行步骤413。
步骤412、用n3的第一个子节点替换n3
n3调用getFirstChild()方法获取n3的第一个子节点,并将其赋值给n3,执行步骤414。
步骤413、获取n3
n3即为DOMdoc中对应于docClone中存在语法错误的节点。
步骤414、定义一个int类型的变量(k,初始值为num.get(i-1))
定义一个int类型的变量,命名为k,将num.get(i-1)赋值给k,执行步骤415。
步骤415、定义一个int类型的变量(m,初始值为0)
定义一个int类型的变量,命名为m,并将0赋值给m,执行步骤416。
步骤416、判断(m<k)是否为真
若为真,则执行步骤417;若为假,则执行步骤418。
步骤417、变量m自增1,并且用n3的下一个兄弟节点替换n3
n3调用getNextSibling()方法获取n3的下一个兄弟节点,并用该节点替换n3,执行步骤416。
步骤418、变量j自减1
变量j自减1,执行步骤411。
采用这种方案只是其中一种实现方式的软件具化方式,具有可实施效果好,简单易行的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,在S42中,position对应于鼠标在JEditorPane的点击位置,取值由JEditorPane调用viewToModel(e.getPoint())方法获取;
p1和p2的初始值为0;
node的初始值为null。采用这种方案对其方式进行进一步的限定,以使其具有实施效果好,简单易行的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
在另一种实例中,在S44中,在JEditorPane上依据相关变量选中该条错误信息的过程包括:
S441,判断p2==0是否为真,若为真,则将content变量表示的字符串的长度值赋值给p2;
S442,JEditorPane调用setCartPosition(p1)、moveCartPosition(p2)方法,以选中JEditorPane上鼠标点击位置处的错误信息;
在S45中,S43中获取的node为鼠标点击选中的语法错误信息所对应的节点,在DOMdoc中找到该节点并以不同于其他节点的方式显示该节点。采用这种方案通过节点的对应变换,以对错误信息的最终位置进行精确定位,以使其具有定位准确度高,修改起来更加简单的有利之处。并且,这种方式只是一种较佳实例的说明,但并不局限于此。在实施本发明时,可以根据使用者需求进行适当的替换和/或修改。
这里说明的设备数量和处理规模是用来简化本发明的说明的。对本发明的基于XML Schema验证XML文档的方法的应用、修改和变化对本领域的技术人员来说是显而易见的。
尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用。它完全可以被适用于各种适合本发明的领域。对于熟悉本领域的人员而言,可容易地实现另外的修改。因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。

Claims (10)

1.一种基于XML Schema验证XML文档的方法,其特征在于,包括:
S1,Java语言实现DOM编程接口,解析XML文档以获取相应的解析文档DOMdoc;
S2,对解析文档DOMdoc进行完整性校验,以判断其是否存在语法错误;
S3,输出错误信息;
S4,定义错误位置追踪函数;
其中,所述追踪函数依据鼠标点击位置确定错误信息,并在DOMdoc中找到该条错误信息对应的节点,并以不同于其他节点的方式显示该节点,具体实施方式取决于DOMdoc文档的显示方式。
2.如权利要求1所述的基于XML Schema验证XML文档的方法,其特征在于,在S1中,还需要定义错误类Error以及相关变量;
其中,相关变量的定义包括:
一个用于保存错误信息的String类型变量content,其初始值被配置为空字符串;
另一个用于保存为XML文档中存在的语法错误创建的ArrayList<Error>类型的变量errors;
所述Error的建立包括:
定义一个Node类型变量,一个int类型变量;
在Error中定义构造函数以及对应的两个传入参数,其中一个传入参数为Node类型,以DOMdoc中存在语法错误的节点相对应,另一个传入参数为int类型,以与content变量表示的字符串长度相对应;
在构造函数中为Node类型变量及int类型变量定义相关的赋值语句。
3.如权利要求1所述的基于XML Schema验证XML文档的方法,其特征在于,在S1中,所述XML文档的解析方式被配置为采用DOM(Document Object Model)方式进行解析,且所述解析文档类型为Document类型;
对解析文档DOMdoc进行拷贝以得到克隆后的解析文档docClone;
所述docClone通过DOMdoc调用cloneNode(true)方法以获取。
4.如权利要求1所述的基于XML Schema验证XML文档的方法,其特征在于,在S2中还需要定义错误处理类handleError,以通过所述handleError实现DOMErrorHandler接口,并在handleError中定义错误处理函数;
获取docClone的DOMConfiguration对象,并为该对象设置相关参数;
其中,错误处理函数的定义过程包括:
S21,在错误处理函数有一个DOMError类型的传入参数err;
S22,定义一个DOMLocator类型的变量loc,并将err调用getLocation()方法获取的值赋值给loc;
S23,将语法错误实例化为Error对象,并保存在errors变量中,以备进行错误信息追踪;
S24,判断语法错误类型;
S25,更新错误信息,以备将错误信息输出。
5.如权利要求4所述的基于XML Schema验证XML文档的方法,其特征在于,在S23中,将语法错误实例化Error对象的过程包括:
S231,依据docClone文档的语法错误节点在DOMdoc中找到对应节点node;
S232,调用Error类的构造函数并将node和content.length()作为传入参数,获取Error对象;
在S24中,语法错误包括DOMError.SERITY_WARNING,DOMError.SERITY_ERROR,DOMError.SERITY_FATAL_ERROR三种类型,err通过调用getSerivity()方法以获取当前语法错误类型,并依据错误类型更新content;
且在S24中,err通过调用getMessage方法获取错误信息,并将错误信息更新到content。
6.如权利要求1所述的基于XML Schema验证XML文档的方法,其特征在于,在S3中,错误信息输出被配置为采用文本形式或信息输出面板的方式用;
其中,在GUI编程中定义一个JFrame,以在JFrame中嵌入一个JEditorPane,进而通过JEditorPane调用setText()方法,将保存错误信息的content作为JEditorPane的内容,配合错误追踪函数实现错误位置追踪。
7.如权利要求1所述的基于XML Schema验证XML文档的方法,其特征在于,在S4中,错误位置追踪函数是一个JEditorPane的鼠标点击事件函数,当鼠标点击在JEditorPane上输出的错误信息时,实现依据错误信息追踪语法错误位置。
8.如权利要求7所述的基于XML Schema验证XML文档的方法,其特征在于,鼠标点击事件函数定义过程为:
S41,函数有一个MouseEvent类型的传入参数为e;
S42,在鼠标点击事件函数中定义三个int类型变量position,p1,p2,以及一个Node类型变量node;
S43,依据相关变量确定鼠标点击的错误信息,并将errors变量中对应于错误信息的error对象给相关变量进行赋值;
S44,在JEditorPane上依据相关变量选中该条错误信息;
S45,依据相关变量值在DOMdoc中找到存在语法错误的节点。
9.如权利要求8所述的基于XML Schema验证XML文档的方法,其特征在于,在S42中,position对应于鼠标在JEditorPane的点击位置,取值由JEditorPane调用viewToModel(e.getPoint())方法获取;
p1和p2的初始值为0;
node的初始值为null。
10.如权利要求8所述的基于XML Schema验证XML文档的方法,其特征在于,在S44中,在JEditorPane上依据相关变量选中该条错误信息的过程包括:
S441,判断p2==0是否为真,若为真,则将content变量表示的字符串的长度值赋值给p2;
S442,JEditorPane调用setCartPosition(p1)、moveCartPosition(p2)方法,以选中JEditorPane上鼠标点击位置处的错误信息;
在S45中,S43中获取的node为鼠标点击选中的语法错误信息所对应的节点,在DOMdoc中找到该节点并以不同于其他节点的方式显示该节点。
CN201810762652.7A 2018-07-12 2018-07-12 基于XML Schema验证XML文档的方法 Active CN108959095B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810762652.7A CN108959095B (zh) 2018-07-12 2018-07-12 基于XML Schema验证XML文档的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810762652.7A CN108959095B (zh) 2018-07-12 2018-07-12 基于XML Schema验证XML文档的方法

Publications (2)

Publication Number Publication Date
CN108959095A true CN108959095A (zh) 2018-12-07
CN108959095B CN108959095B (zh) 2021-11-23

Family

ID=64483665

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810762652.7A Active CN108959095B (zh) 2018-07-12 2018-07-12 基于XML Schema验证XML文档的方法

Country Status (1)

Country Link
CN (1) CN108959095B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110611713A (zh) * 2019-09-17 2019-12-24 深圳市网心科技有限公司 一种数据下载方法、***及电子设备和存储介质
CN111324844A (zh) * 2020-02-20 2020-06-23 重庆锐云科技有限公司 数据导出控制方法、装置、营销管理平台及存储介质
CN111984739A (zh) * 2019-05-24 2020-11-24 中移(苏州)软件技术有限公司 一种xml与关系型数据库的转换方法、终端和存储介质
CN112784112A (zh) * 2021-01-29 2021-05-11 银清科技有限公司 报文校验方法及装置
CN113822024A (zh) * 2021-09-24 2021-12-21 杭州同泽信息技术服务有限公司 一种支持多人在线编辑财务文档及校验真伪的方法和装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1472645A (zh) * 2002-06-27 2004-02-04 确认可扩展标记语言文档并实时报告模式违背情况的***和方法
CN101101602A (zh) * 2007-07-27 2008-01-09 华为技术有限公司 一种数据格式的校验方法及装置
CN101263459A (zh) * 2004-10-01 2008-09-10 迪堡公司 图形xml编程***和引擎
US20090254812A1 (en) * 2008-04-03 2009-10-08 Xerox Corporation Sgml document validation using xml-based technologies
CN101634982A (zh) * 2008-07-24 2010-01-27 国际商业机器公司 用于验证xml文档的方法和***
CN101808073A (zh) * 2009-02-13 2010-08-18 华为技术有限公司 一种获取节点信息的方法、服务器以及***
CN102402556A (zh) * 2010-09-16 2012-04-04 深圳市金蝶中间件有限公司 Xml文件的校验方法和装置
CN102646039A (zh) * 2012-02-29 2012-08-22 河海大学 基于XML Schema的软件界面生成***及方法
US20150278386A1 (en) * 2014-03-25 2015-10-01 Syntel, Inc. Universal xml validator (uxv) tool
CN105160590A (zh) * 2015-07-24 2015-12-16 国家电网公司 一种基于可扩展标记语言的高速模型智能配用电领域的信息互操作校验方法
CN105354181A (zh) * 2015-09-24 2016-02-24 四川长虹电器股份有限公司 Xbrl文档的校验及纠错定位方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1472645A (zh) * 2002-06-27 2004-02-04 确认可扩展标记语言文档并实时报告模式违背情况的***和方法
CN101263459A (zh) * 2004-10-01 2008-09-10 迪堡公司 图形xml编程***和引擎
CN101101602A (zh) * 2007-07-27 2008-01-09 华为技术有限公司 一种数据格式的校验方法及装置
US20090254812A1 (en) * 2008-04-03 2009-10-08 Xerox Corporation Sgml document validation using xml-based technologies
CN101634982A (zh) * 2008-07-24 2010-01-27 国际商业机器公司 用于验证xml文档的方法和***
CN101808073A (zh) * 2009-02-13 2010-08-18 华为技术有限公司 一种获取节点信息的方法、服务器以及***
CN102402556A (zh) * 2010-09-16 2012-04-04 深圳市金蝶中间件有限公司 Xml文件的校验方法和装置
CN102646039A (zh) * 2012-02-29 2012-08-22 河海大学 基于XML Schema的软件界面生成***及方法
US20150278386A1 (en) * 2014-03-25 2015-10-01 Syntel, Inc. Universal xml validator (uxv) tool
CN105160590A (zh) * 2015-07-24 2015-12-16 国家电网公司 一种基于可扩展标记语言的高速模型智能配用电领域的信息互操作校验方法
CN105354181A (zh) * 2015-09-24 2016-02-24 四川长虹电器股份有限公司 Xbrl文档的校验及纠错定位方法

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
BIN JI.ETC: "Research on XML Schema Transformation Algorithm", 《2017 2ND INTERNATIONAL CONFERENCE ON COMMUNICATIONS,INFORMATION MANAGEMENT AND NETWORK SECURITY》 *
BOSHI SUN 等: "Incremental Validation of XML Document Based on Simplified XML Element Sequence Pattern", 《2010 SEVENTH WEB INFORMATION SYSTEMS AND APPLICATIONS CONFERENCE》 *
曹风华: "一种XML解析器技术的研究与实现", 《微型机与应用》 *
王伟良 等: "基于XML Schema抽象模型的XML模式验证方法", 《计算机应用与软件》 *
许桂艳 等: "基于XML Schema的知识描述与模式验证", 《计算机***应用》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111984739A (zh) * 2019-05-24 2020-11-24 中移(苏州)软件技术有限公司 一种xml与关系型数据库的转换方法、终端和存储介质
CN110611713A (zh) * 2019-09-17 2019-12-24 深圳市网心科技有限公司 一种数据下载方法、***及电子设备和存储介质
CN111324844A (zh) * 2020-02-20 2020-06-23 重庆锐云科技有限公司 数据导出控制方法、装置、营销管理平台及存储介质
CN112784112A (zh) * 2021-01-29 2021-05-11 银清科技有限公司 报文校验方法及装置
CN112784112B (zh) * 2021-01-29 2023-06-27 银清科技有限公司 报文校验方法及装置
CN113822024A (zh) * 2021-09-24 2021-12-21 杭州同泽信息技术服务有限公司 一种支持多人在线编辑财务文档及校验真伪的方法和装置

Also Published As

Publication number Publication date
CN108959095B (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
CN108959095A (zh) 基于XML Schema验证XML文档的方法
US8499280B2 (en) Identifying source code elements for refactoring
KR100833538B1 (ko) Xml 문서의 검증 및 스키마 위반을 보고하기 위한시스템 및 방법
CN110333850A (zh) 接口文档的生成方法、装置、计算机设备和存储介质
CN1841376B (zh) 对网络表单的数据驱动动作
US7788640B2 (en) Using code analysis to generate documentation
CN104360859B (zh) 一种可视化的服务开发方法和***
US9594802B2 (en) Graphical modeling of database query statements
Lee et al. Extended Process to Product Modeling (xPPM) for integrated and seamless IDM and MVD development
CN108762743B (zh) 一种数据表操作代码生成方法及装置
US20100057482A1 (en) Roundtrip merge of bpel processes and bpmn models
US7509536B1 (en) Method and system for error handling
US20100180256A1 (en) Method and system for generating functional test cases
US8387010B2 (en) Automatic software configuring system
Estañol et al. Conformance checking in UML artifact-centric business process models
US9009110B2 (en) Declarative view objects
CN110287429A (zh) 数据解析方法、装置、设备及存储介质
Boranbayev et al. Development and optimization of information systems for health insurance billing
US20060053106A1 (en) Use of generated SQL for evaluation of decision point rules in a workflow system
US20070038666A1 (en) Independent explicit interface implementation
US20110246501A1 (en) Systems and methods for entity registration and management
CN116610558A (zh) 代码检测方法、装置、电子设备及计算机可读存储介质
US9501456B2 (en) Automatic fix for extensible markup language errors
Kritikos et al. Towards semantic KPI measurement
KR100691261B1 (ko) 확장성 생성 언어 변경 처리 시스템 및 그 방법

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
GR01 Patent grant
GR01 Patent grant