CN101520770A - 分析、转换和拆分结构化数据的方法和装置 - Google Patents
分析、转换和拆分结构化数据的方法和装置 Download PDFInfo
- Publication number
- CN101520770A CN101520770A CN200810080925A CN200810080925A CN101520770A CN 101520770 A CN101520770 A CN 101520770A CN 200810080925 A CN200810080925 A CN 200810080925A CN 200810080925 A CN200810080925 A CN 200810080925A CN 101520770 A CN101520770 A CN 101520770A
- Authority
- CN
- China
- Prior art keywords
- data
- structure data
- mentioned
- pattern information
- regular expression
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种分析结构化数据的方法和装置、转换结构化数据的方法和装置以及拆分结构化数据的方法和装置。该分析结构化数据的方法包括:利用预先定义的与上述结构化数据相对应的模式信息,对上述结构化数据进行分析和验证;其中,上述模式信息包括利用正则表达式表示的与该结构化数据的结构和验证有关的信息。在本发明中,通过利用正则表达式预先构建与诸如EDI文档的结构化数据的结构和验证有关的模式信息,而在分析过程中直接利用该模式信息获取该结构化数据的结构信息并对该结构化数据进行验证,从而能够解除分析方法和装置对于结构化数据的特定结构的依赖性。
Description
技术领域
本发明涉及数据处理领域,具体地,涉及分析结构化数据(structuraldata)的方法和装置、转换结构化数据的方法和装置以及拆分结构化数据的方法和装置。
背景技术
电子数据交换(Electronic Data Interchange,EDI)是这样一组标准:其用于构建要在商务、组织、政府实体和其他团体之间以及内部进行电子交换的信息。作为数据交换的标准手段,对于EDI来说,最重要的任务是分析根据EDI标准所构建的EDI文档,以使业务合作伙伴能够从中获得所感兴趣的有用信息。但是,很遗憾,如本领域技术人员所公知的,EDI文档是一种可读性很差的基于文本的文档。与XML文档相比较,EDI文档并不具有自描述信息。这导致在现有技术中、在对EDI文档进行分析时,首先要根据预定的分隔符信息等获取EDI文档的结构知识,然后才能够在该结构知识的基础上对EDI文档的具体内容进行分析。因而,在现有技术中,缺乏一种用于分析EDI文档的、标准且灵活的机制。
以WBSF Healthcare所附带的jigsaw所采用的机制为例,在现有技术中,分析EDI文档的过程通常如下:
1)正确地获得EDI文档的结构知识,其中需要预先知道有关在该EDI文档中所使用的所有分隔符的信息;
2)以字节流的形式从该EDI文档中读取字符串;
3)在字符串中搜索各段,并将这些段划分为元素,最后得到指定元素的值。
结果,在以上那样传统的EDI文档分析方案中,存在以下缺点和限制:
1)单调性:每一种结构的EDI文档都需要有其定制的分析器,因为分析器的代码严格依赖于EDI文档的特定结构。因此,对于不同结构的EDI文档,分析器的代码很难被重用。
2)不可读性:对于每一种结构的EDI文档来说,其分析器中都会存在大量冗余及重复的代码,因为读取和分析EDI文档中的各段的逻辑非常相似,并且分析器的代码依赖于大量的if/else语句来实现针对不同情况的处理。
3)不可扩展性:由于分析器的代码依赖于EDI文档的特定结构,所以一旦EDI文档的结构改变,则分析器的代码也必须相应改变以适应新的结构。
目前,存在一些试图改进上述那样传统的EDI文档分析机制的方案。下面列举出有代表性的两种。
1)构建核心分析框架并允许开发人员开发新的子类以满足扩展需要,参见名称为“Method facilitating data stream parsing for use withelectronic commerce”的美国专利6850950。
与传统的EDI文档分析方法相比较,该方案在可扩展性及可重用性上实现了一定的进步。但是,该方案仍然需要用户编写新的分析代码以适应新的EDI文档结构,从而缺乏充分的灵活性。
2)利用DTD(Document Type Definition,文档类型定义)描述EDI文档的结构,参见在http://www.americancoders.com/OpenBusinessObjects上登载的文章“OBOE-Open Business Objects for EDI”。
该方案不能完全避免为新结构的EDI文档编写新的分析代码。虽然该方案在灵活性上实现了一定的进步,但并不十分彻底。
以上这些问题,不仅仅存在于EDI文档的分析中,对于一些其他类型的结构化数据来说也是同样存在的。
因此,需要有一种灵活且可扩展的、用于分析诸如EDI文档的结构化数据的机制,以适应这样的结构化数据的多样性。
发明内容
为了解决上述问题,本发明提供了一种分析结构化数据的方法和装置、转换结构化数据的方法和装置以及拆分结构化数据的方法和装置,以便通过利用正则表达式预先构建与诸如EDI文档的结构化数据的结构和验证有关的模式信息,而在分析过程中直接利用该模式信息获取该结构化数据的结构信息并对该结构化数据进行验证,来解除分析方法和装置对于结构化数据的特定结构的依赖性,从而提供具有最大灵活性和可扩展性的自描述结构化数据分析机制。
根据本发明的一个方面,提供了一种分析结构化数据(structural data)的方法,其特征在于,包括:利用预先定义的与上述结构化数据相对应的模式信息(schema information),对上述结构化数据进行分析和验证;其中,上述模式信息包括利用正则表达式(regular expression)表示的与该结构化数据的结构和验证有关的信息。
根据本发明的另一个方面,提供了一种转换结构化数据的方法,其特征在于,包括:利用上述的分析结构化数据的方法对上述结构化数据进行分析;以及将分析后的上述结构化数据从源格式转换为目标格式。
根据本发明的另一个方面,提供了一种拆分结构化数据的方法,其特征在于,包括:利用上述的分析结构化数据的方法对上述结构化数据进行分析;以及将分析后的上述结构化数据拆分为多个部分数据。
根据本发明的另一个方面,提供了一种分析结构化数据的装置,其特征在于,包括:分析/验证模块,用于利用预先定义的与上述结构化数据相对应的模式信息,对上述结构化数据进行分析和验证;其中,上述模式信息包括利用正则表达式表示的与该结构化数据的结构和验证有关的信息。
根据本发明的另一个方面,提供了一种转化结构化数据的装置,其特征在于,包括:上述的分析结构化数据的装置;以及转换单元,用于将由上述分析结构化数据的装置分析后的上述结构化数据从源格式转换为目标格式。
根据本发明的另一个方面,提供了一种拆分结构化数据的装置,其特征在于,包括:上述的分析结构化数据的装置;以及拆分单元,用于将由上述分析结构化数据的装置分析后的上述结构化数据拆分为多个部分数据。
附图说明
相信通过以下结合附图对本发明具体实施方式的说明,能够使人们更好地了解本发明上述的特点、优点和目的。
图1示出了应用正则表达式的一段示例性代码;
图2是EDI文档结构的示意图;
图3示出了EDI文档的具体示例;
图4示出了根据本发明实施例的、与图3中的EDI文档对应的模式文件;
图5是根据本发明实施例的分析结构化数据的方法的流程图;
图6示出了由图4的模式文件中的正则表达式组装而成的正则表达式树;
图7示出了基于图4的模式文件设定的取值路径的示例;
图8是根据本发明实施例的转换结构化数据的方法的流程图;
图9是根据本发明实施例的拆分结构化数据的方法的流程图;
图10是根据本发明实施例的分析结构化数据的装置的方框图;
图11是根据本发明实施例的转换结构化数据的装置的方框图;
图12是根据本发明实施例的拆分结构化数据的装置的方框图;以及
图13是对图7的取值路径信息进行路径-属性映射的说明图。
具体实施方式
下面就结合附图对本发明的各个优选实施例进行详细说明。
本发明的主要构思是,对于诸如EDI文档的结构化数据,利用预先定义的、与该结构化数据相对应的模式文件中的模式信息,对该结构化数据进行分析和验证。其中,该模式信息包括利用正则表达式表示的、与该结构化数据的结构和验证有关的信息。从而,与XML模式类似,在本发明中,在对该结构化数据进行分析时,利用该模式信息作为该结构化数据的自描述信息,从该模式信息中直接获取与该结构化数据的结构和验证有关的信息,而无需对该结构化数据本身进行结构分析。
为了更好的理解本发明的上述构思,下面对本发明中的模式文件进行详细说明。首先,对该模式文件中所应用的正则表达式进行简要说明。
正则表达式最早是由数学家Stephen Kleene于1956年提出的,他是在对自然语言的递增研究成果的基础上提出来的。具有完整语法的正则表达式使用在字符的格式匹配方面上,后来被应用到熔融信息技术领域。自从那时起,正则表达式经过几个时期的发展,现在的标准已经被ISO(国际标准组织)批准和被Open Group组织认定。有关正则表达式的更详细信息,可参考以下网址的文章:
http://www.opengroup.org/onlinepubs/007908799/xbd/re.html
http://www.zytrax.com/tech/web/regex.htm
http://www.grymoire.com/Unix/Regular.html
http://search.cpan.org/dist/perl/pod/perlre.pod
http://analyser.oli.tudelft.nl/regex/index.html.en。
图1示出了应用正则表达式进行字符串的匹配和获取的一段示例性代码。
在图1中,“(\d*).*?(c)”是一个正则表达式,其表示具有0-9中的数字和字母c的所有字符串。其中,如图1的右侧部分的实线框中所表示的,上述正则表达式“(\d*).*?(c)”中所采用的一些表达方式已经被预先定义。其中,“.”被预定义为表示任何字符;“\d”被预定义为表示0-9中的数字;“X*”,例如“\d*”,被预定义为表示X、例如“\d”出现了0或多次;“X*?”,例如“.*?”,表示X、例如“.”(即任何字符)出现了0或多次,其中“X*”和“X*?”的区别为:“X*”为贪婪的,在不考虑其后面跟随的正则表达式的情况下为“X*”做尽可能多的匹配,而“X*?”为非贪婪的,它会优先考虑其后跟随的正则表达式,而对“X*?”做尽可能少的匹配;(X)被预定义为表示在目标字符串与正则表达式匹配时,与X对应的字符串作为取值对象。
图1所示出的代码段的作用是将目标字符串“1234debcd”与正则表达式“(\d*).*?(c)”进行比较,以验证二者是否匹配,并且,在二者相匹配时获取由括号内的正则表达式部分所指定的字符串。
从图1的示例可以看出,正则表达式是一种用于限定字符串或字符串的一部分的模式。如果将该模式与一个目标字符串进行比较,则结果将是真或者假,即匹配或不匹配。并且,如果结果是真,则将返回指定的字符串部分。
从而,利用正则表达式,不仅能够验证目标字符串与由正则表达式所预定义的模式是否匹配,还能够在匹配的同时取出指定元素的值。也就是说,正则表达式不仅具有对于目标字符串执行验证的能力,还具有从目标字符串中获取指定元素值的能力。在本发明中,便是利用了正则表达式的这两种能力。
此外,还可以看出,正则表达式具有很强的字符串描述和概括能力,这对于EDI文档所采用的ANSI字符集来说,是尤为有效的。
接着,对EDI文档进行简要说明。
图2是已知EDI文档结构的示意图。可以看出,EDI文档是一种具有良好结构的文档,它由若干段(segment)组成,每个段又由若干元素(element)组成,并且段和元素均由特定的字符来标识。
具体地,图3示出了EDI文档的具体示例。在图3中,“ISA”、“GS”、“ST”等分别是段的标识,而段标识“ISA”后的“*00*”、“*00*”、“*ZZ*MERCATOR_PS”、“*ZZ*MERCATOR_DEV”、“*010806*1200*U*00401*000000003*0*T*:~”则是段“ISA”下的元素。
根据本发明,基于图2所示出的EDI文档结构的知识,可以为图3中的特定EDI文档生成基于正则表达式的、包括与该EDI文档的结构和验证有关的信息的模式文件。
图4示出了根据本发明实施例的、与图3中的EDI文档对应的基于正则表达式的模式文件。该模式文件是以XML格式实现的,因为EDI文档具有良好的格式,使用XML实现循环、继承等都非常方便,所以XML是一种很好的选择。
具体地,在图4的模式文件中,与图3中的EDI文档的层级关系相对应,“<ControlHeader occurrence=”1”prefix=”ISA”>”标识段“ISA”的开始,该行后的每一行都表示对段“ISA”下的一个元素的限定;其中,“<ele type=”ID”/>”、“<ele type=”AN”/>”、“<ele type=”ID”/>”、“<eletype=”AN”/>”等各个元素的值的限定是利用已经被预先定义了含义的“ID”、“AN”等正则表达式直接实现的;而“<ele>01|14|20|ZZ</ele>”、“<ele>U</ele>”等各个元素的值的限定是利用未被预先定义、表示特定字符串的正则表达式实现的,其中“01|14|20|ZZ”表示包含“01”或“14”或“20”或“ZZ”的字符串,“U”表示包含“U”的字符串;“/ControlHeader”标识段“ISA”的结束。类似地,“<GroupHeaderoccurrence=”1”prefix=”GS”>”标识段“GS”的开始,“/GroupHeader”标识段“GS”的结束。
从而,可以看出,根据本发明,在为特定结构的诸如EDI文档的结构化数据生成基于正则表达式的模式文件的过程中,一个最主要的任务是要为这种特定结构中的每一个元素考虑出各种可能(允许)的值的情况,从而为该元素找出能够概括出其值的各种情况的正则表达式,以对该元素的值进行涵盖这各种情况的限定,以便使所生成的模式文件能够应用于该特定结构的所有结构化数据。
此外,需要说明的是,上述图4中的模式文件是以预先定义的特定生成规则生成的,其仅是示例性的,在实际实现中,可以根据具体情况设定适合的生成规则。从而,在本发明中,只要能够利用正则表达式表示与诸如EDI文档的结构化数据的结构和验证有关的信息,可以以任何可能的预定规则生成与该结构化数据相对应的模式文件,作为该结构化数据的自描述信息。
下面,在以上内容的基础上,详细描述本发明的分析结构化数据的方法。
图5是根据本发明实施例的分析结构化数据的方法的流程图。如图5所示,首先,在步骤505,对于待分析的诸如EDI文档的结构化数据,获取预先定义的、与该待分析的结构化数据相对应的模式信息。
在本实施例中,上述模式信息预先保存在与该待分析的结构化数据相对应的模式文件中。并且,如上所述,该模式信息包括利用正则表达式表示的、与该待分析的结构化数据的结构和验证有关的信息。具体地,该模式信息包括用于验证该待分析的结构化数据的、与该待分析的结构化数据的层级关系相对应的每一个元素的值的正则表达式。
也就是说,在本实施例中,在为待分析的结构化数据预先定义的模式文件中,预先描述有与该待分析的结构化数据的结构有关的层级关系,并为该层级关系中的各个元素设定有用于限定该元素的值的正则表达式。
从而,在本步骤中,获取该预先定义的、与待分析的结构化数据相对应的模式文件,作为该待分析的结构化数据的自描述信息。从而使该模式文件能够用于后面的分析过程中,以便可直接从该模式文件中获取待分析的结构化数据的结构信息,并且利用其中用于限定各个元素的值的正则表达式,来验证该待分析的结构化数据是否合法。
接着,在步骤510,对上述模式信息进行分析,以解析出与上述待分析的结构化数据的结构和验证有关的信息。在该步骤中,对模式信息本身、根据预定的规则进行有关语法等的分析。
具体地,在图4的模式文件的情况下,由于该模式文件是XML格式的,所以在对该模式文件进行分析时,利用针对于XML文件的语法等分析方法,并根据在该模式文件的生成中所应用的预定规则、例如各标记的含义等,从该模式文件解析出用于验证待分析的结构化数据的、与该待分析的结构化数据的层级关系相对应的每一个元素的值的正则表达式。
接着,在步骤515,根据上述与待分析的结构化数据的结构和验证有关的信息,将上述模式文件中的正则表达式按照层级关系组装为正则表达式树。
由于模式文件中的正则表达式非常复杂,所以如果将待分析的结构化数据与模式文件中的所有正则表达式进行匹配,则匹配效率将会非常低。从而,在本步骤中,将模式文件中的正则表达式按照层级关系组装为正则表达式树,以便使该模式文件中的正则表达式形成具有父子关系的集合,使较高级别的正则表达式能够对待分析的结构化数据进行较为粗略的匹配,较低级别的正则表达式能够对待分析的结构化数据进行较为细致的匹配。
在一个实施例中,例如与待分析的结构化数据的层级关系相对应地,将模式文件中的正则表达式组装为具有三级的正则表达式树,第一级表示待分析的结构化数据,第二级是各段,第三级是各元素。
在图4的模式文件的情况下,图6示出了与该模式文件中的正则表达式对应的正则表达式树。其中,如上所述,正则表达式中的圆括号表示在匹配时要取值的部分。
具体地,图6所示的正则表达式树分为两级,级别0的正则表达式为(.*?~),它的含义为:对任何字符进行非贪婪匹配,直到遇到字符“~”,并取得匹配到的内容。由于如图3所示,在本说明书所给出的例子中,EDI文档的不同段是以字符“~”区分的,所以这样的EDI文档经过图6的正则表达式树中级别0的正则表达式的匹配,其中的每个段便可以被匹配取出。进而,级别1包含若干并列的正则表达式,每个正则表达式均以某个段的标识符开始,例如:“ST\*(270)\*([^]*)~”,标识符后面跟随的是匹配该段的各个元素的正则表达式,元素之间则由“\*”分隔。这样,级别1中的每个正则表达式都会对应于EDI文档中的一个段,它们会与由级别0的正则表达式从EDI文档匹配得出的相应段进行进一步的一一匹配,最终得到EDI文档中各段的每个元素的值。
接着,在步骤520,对上述待分析的结构化数据与上述正则表达式树进行匹配,以验证该待分析的结构化数据。
具体地,在本步骤中,按照层级关系,将该待分析的结构化数据从高到低逐级匹配该正则表达式树,最终使该待分析的结构化数据中的各元素与该正则表达式树中的叶子节点一一对应地进行匹配。并且,在本步骤中,可以利用任何正则表达式匹配手段或引擎来进行待分析的结构化数据与正则表达式树的匹配,本发明对此并没有特别的限制。
此外,在本步骤中,在上述待分析的结构化数据与上述正则表达式树的匹配中,进行延迟匹配。延迟匹配的含义是:在第一次获取结构化数据和正则表达式树并进行匹配时,并不对各个层次进行完整的匹配以一次性得到所有数据,而只是进行最外层次的匹配;只有在需要取得更深层次的数据时,才会在该更深层次上进行匹配。也就是说,这种方式将匹配推迟到“不得不发生”时,故称作延迟匹配(或懒匹配)。通过采用延迟匹配的机制,能够确保只有必要的匹配才会发生,从而能够减少不必要的资源开销。
此外,在本步骤中,可以根据该待分析的结构化数据与上述正则表达式树的匹配结果,提示该待分析的结构化数据是否合法,并在合法的情况下,返回该待分析的结构化数据中、由正则表达式树指定的取值部分的值。对于大多数正则表达式匹配引擎来说,诸如图1所示出的,都可以利用Matcher的group(inti)方法来获取目标字符串中与正则表达式匹配的全部或由正则表达式中的括号所指定的取值部分的字符串。
在可选步骤525,获取根据上述模式信息预先设定的取值路径信息。
具体地,除了对上述待分析的结构化数据与上述正则表达式树进行匹配以验证该待分析的结构化数据之外,结构化数据分析中的另一项主要任务是获取待分析的结构化数据中的某个或某些指定元素的值,以对其进行特定的处理。为此,需要一种途径来从结构化数据中取得这些指定元素的值。
因此,在本实施例中,考虑到上述模式文件具有良好的结构,所以以预定的规则来设定基于该模式文件的取值路径信息,使其指向模式文件中的具体元素位置,来方便地借助于该模式文件定位上述待分析的结构化数据中的指定元素,从而实现该指定元素的值的获取。
在一个实施例中,对应于XML格式的模式文件,取值路径信息利用XPath格式来设定,使该XPath路径指向XML格式的模式文件中的具体元素位置。并且,该取值路径信息可以预先存储在取值路径文件中。
此外,并不限于XPath格式,只要能够清楚地描述要取值的元素在模式文件中、进而在待分析的结构化数据中的位置,任何格式都可以用来设定取值路径信息。并且,所设定的取值路径也可以不指向特定元素,而是指向结构化数据中的所有元素。
图7示出了基于图4中的模式文件设定的取值路径信息。该取值路径信息是以XPath格式设定的。可以看出,该取值路径信息中分别设定了指向图4的模式文件中的段“ST”下的第一个元素的路径和指向段“NM1”下的第1、2、3、8、10、11个元素的路径。
接着,在可选步骤530,对上述取值路径信息进行分析。在该步骤中,对取值路径信息本身、根据预定的规则进行有关语法等的分析。
例如对于XPath格式的取值路径信息而言,在本步骤中,对该取值路径信息进行分析时,利用针对于XPath文件的语法等分析方法,并根据在该取值路径信息的设定中所应用的预定规则、即各标记的含义等,从该取值路径信息中解析出取值路径。
在可选步骤535,对上述取值路径信息进行路径-属性映射,以将上述取值路径信息中所设定的各路径映射为表示该路径的属性,便于以后使用。图13是对图7的取值路径信息进行路径-属性映射的说明图。
接着,在可选步骤540,根据上述模式文件以及上述具体取值位置,从待分析的结构化数据中提取该具体取值位置的元素值。
具体地,在本步骤中,可以利用大多数正则表达式匹配引擎中的Matcher的group(元素序号)方法,根据上述模式文件以及上述具体取值位置,来获取待分析的结构化数据中、该具体取值位置处的指定元素的值。
以上就是对本实施例的分析结构化数据的方法的详细描述。在本实施例中,通过利用正则表达式预先构建与诸如EDI文档的结构化数据的结构和验证有关的模式信息,而在分析过程中直接利用该模式信息获取该结构化数据的结构信息并对该结构化数据进行验证,能够解除本实施例的分析方法对于结构化数据的特定结构的依赖性,从而提供具有最大灵活性和可扩展性的自描述结构化数据分析机制。具体来说,本实施例的优点如下:
1)具有良好的灵活性和可扩展性。因为与诸如EDI文档的结构化数据相关的细节都被定义在模式文件中,并且与取值相关的细节都被定义在取值路径文件中,且模式文件与取值路径文件都为文本文档,其独立于分析过程而生成,所以可以很方便地修改和扩展。
2)正则表达式本身提供了严格的验证机制,故本发明在分析数据的同时能最大程度地保证诸如EDI文档的结构化数据的格式的正确性。
3)可维护性好。模式文件有其自身的格式定义,便于解析,并且可重用性好,故可维护性高。
此外,需要说明的是,虽然在上述实施例中是以EDI文档为具体示例来描述本发明的分析结构化数据的方法的,但是,对于其他的结构化数据,与EDI文档类似,本发明的分析结构化数据的方法都能够同样地适用。
还需要说明的是,对于相同结构的不同结构化数据,上述步骤505~515可以不必重复执行,而是预先执行步骤505~515,并保存执行结果、即所生成的正则表达式树,以便使该结果以后对于相同结构的多个不同结构化数据都能够使用。
下面描述上述实施例的分析结构化数据的方法的几种应用例。
首先描述本发明的利用上述分析结构化数据的方法的转换结构化数据的方法。
图8是根据本发明实施例的转换结构化数据的方法的流程图。如图8所示,首先,在步骤805,利用图5中的分析结构化数据的方法,对待分析的、诸如EDI文档的结构化数据进行分析。
接着,在步骤810,将上述分析后的结构化数据从源格式转换为目标格式,例如,从EDI文档转换为XML格式的文档。
以上就是对本实施例的转换结构化数据的方法的详细描述。
接着描述本发明的利用上述分析结构化数据的方法的拆分结构化数据的方法。
图9是根据本发明实施例的拆分结构化数据的方法的流程图。如图9所示,首先,在步骤905,利用图5中的分析结构化数据的方法,对待分析的、诸如EDI文档的结构化数据进行分析。
接着,在步骤910,将上述分析后的结构化数据拆分为多个部分数据。
在可选步骤915,对上述拆分后的多个部分数据分别添加标头,以封装为目标格式的各个包。
以上就是对本实施例的拆分结构化数据的方法的详细描述。本实施例特别适用于路由器等数据传输装置中,用于将要传输的结构化数据拆分并封装为多个目标格式的包,方便进行传输。
在同一发明构思下,本发明提供一种分析结构化数据的装置。下面结合附图对其进行描述。
图10是根据本发明实施例的分析结构化数据的装置的方框图。如图10所示,本实施例的分析结构化数据的装置10包括:分析/验证模块101、取值模块102。
其中,分析/验证模块101用于利用预先定义的、与诸如EDI文档的待分析的结构化数据相对应的模式信息,对该待分析的结构化数据进行分析和验证。具体地,该分析/验证模块101可进一步包括:模式信息获取单元1011、模式信息分析单元1012、正则表达式组装单元1013以及验证单元1014。
其中,模式信息获取单元1011用于获取预先定义的、与上述待分析的结构化数据相对应的模式信息。其中,该模式信息包括利用正则表达式表示的、与该待分析的结构化数据的结构和验证有关的信息。具体地,该模式信息包括:用于验证该待分析的结构化数据的、与该待分析的结构化数据的层级关系相对应的每一个元素的值的正则表达式。这些正则表达式限定了该待分析的结构化数据中的各个元素的可能(允许)值。并且,在一个实施例中,该模式信息以XML格式预先保存在与该待分析的结构化数据相对应的模式文件中,作为该待分析的结构化数据的自描述信息。
模式信息分析单元1012用于对上述模式信息进行分析,以获得其中与上述待分析的结构化数据的结构和验证有关的信息。具体地,该模式信息分析单元1012对模式信息本身,根据预定的规则、例如各标记的含义等,进行有关语法等的分析。例如,对于XML格式的模式信息而言,该模式信息分析单元1012可利用XML分析引擎来实现。
正则表达式组装单元1013用于根据上述与待分析的结构化数据的结构和验证有关的信息,将上述模式信息中的正则表达式按照层级关系组装为正则表达式树。在一个实施例中,例如与上述待分析的结构化数据的层级关系相对应地,将上述模式信息中的正则表达式组装为具有三级的正则表达式树,第一级表示待分析的结构化数据,第二级是各段,第三级是各个元素。
验证单元1014用于将上述待分析的结构化数据中的各元素与上述正则表达式树中的相应节点进行匹配,以验证该待分析的结构化数据。在一个实施例中,该验证单元1014对于上述待分析的结构化数据与上述正则表达式树进行延迟匹配。
取值模块102用于获取上述待分析的结构化数据中的指定元素的值。具体地,该取值模块102可进一步包括:取值路径信息获取单元1021、取值路径信息分析单元1022、取值路径映射单元1023以及搜索/取值单元1024。
取值路径信息获取单元1021用于获取根据上述模式信息预先设定的取值路径信息。在一个实施例中,对应于上述XML格式的模式文件,该取值路径信息是利用XPath格式、以预定的规则来设定的,其指向XML格式的模式文件中的具体元素位置,从而借助于该模式文件定位上述待分析的结构化数据中的指定元素。并且,该取值路径信息被预先存储在取值路径文件中。
取值路径信息分析单元1022用于对上述取值路径信息进行分析,以获取其中所表示的取值路径。具体地,该取值路径信息分析单元1022对上述取值路径信息本身,根据预定的规则、例如各标记的含义等,进行有关语法等的分析。例如,对于XPath格式的取值路径信息而言,该取值路径信息分析单元1022可利用XML分析引擎来实现。
取值路径映射单元1023用于对上述取值路径进行路径-属性映射,以将上述取值路径信息中所设定的各路径映射为表示该路径的属性。
搜索/取值单元1024用于根据上述模式文件以及上述具体取值位置,从待分析的结构化数据中提取该具体取值位置的元素值。
本实施例的分析结构化数据的装置10还可以包括:模式信息设定单元103以及取值路径设定单元104。
其中,模式信息设定单元103用于使用户能够在本实施例的分析结构化数据的装置10中为待分析的结构化数据设定模式信息。
取值路径设定单元104用于使用户能够在本实施例的分析结构化数据的装置10中为待分析的结构化数据设定取值路径信息。
以上就是对本实施例的分析结构化数据的装置的详细描述。其中,该分析结构化数据的装置10及其各个组成部分,可以由专用的电路或芯片构成,也可以通过计算机(处理器)执行相应的程序来实现。
下面描述上述实施例的分析结构化数据的装置10的几种应用例。
图11是根据本发明实施例的转换结构化数据的装置的方框图。如图11所示,本实施例的转换结构化数据的装置11包括:图10中的分析结构化数据的装置10以及转换单元111。其中,转换单元111用于将由上述分析结构化数据的装置10分析后的结构化数据从源格式转换为目标格式,例如,从EDI文档转换为XML格式的文档。
图12是根据本发明实施例的拆分结构化数据的装置的方框图。如图12所示,本实施例的拆分结构化数据的装置12包括:图10中的分析结构化数据的装置10、拆分单元121以及包封装单元122。
其中,拆分单元121用于将由上述分析结构化数据的装置10分析后的结构化数据拆分为多个部分数据。
包封装单元122用于对上述拆分后的多个部分数据分别添加标头,以封装为目标格式的各个包。
以上虽然通过一些示例性的实施例对本发明的分析结构化数据的方法和装置、转换结构化数据的方法和装置以及拆分结构化数据的方法和装置进行了详细的描述,但是以上这些实施例并不是穷举的,本领域技术人员可以在本发明的精神和范围内实现各种变化和修改。因此,本发明并不限于这些实施例,本发明的范围仅以所附权利要求为准。
Claims (21)
1.一种分析结构化数据(structural data)的方法,其特征在于,包括:
利用预先定义的与上述结构化数据相对应的模式信息(schemainformation),对上述结构化数据进行分析和验证;
其中,上述模式信息包括利用正则表达式(regular expression)表示的与该结构化数据的结构和验证有关的信息。
2.权利要求1所述的分析结构化数据的方法,其中,上述结构化数据包括电子数据交换文档。
3.权利要求1所述的分析结构化数据的方法,其中上述模式信息包括:用于验证上述结构化数据的、与上述结构化数据的层级关系相对应的每一个元素的值的正则表达式。
4.权利要求1所述的分析结构化数据的方法,其中上述模式信息是XML格式的。
5.权利要求1所述的分析结构化数据的方法,其中上述利用预先定义的与上述结构化数据相对应的模式信息,对上述结构化数据进行分析和验证的步骤进一步包括:
对上述模式信息进行分析,以解析出其中与上述结构化数据的结构和验证有关的信息;
根据上述与结构化数据的结构和验证有关的信息,将上述结构化数据中的各元素与上述模式信息中的相应正则表达式进行匹配,以验证该结构化数据。
6.权利要求5所述的分析结构化数据的方法,其中上述利用预先定义的与上述结构化数据相对应的模式信息,对上述结构化数据进行分析和验证的步骤进一步包括:
根据上述与结构化数据的结构和验证有关的信息,将上述模式信息中的正则表达式按照层级关系组装为正则表达式树;并且
根据上述与结构化数据的结构和验证有关的信息,将上述结构化数据中的各元素与上述模式信息中的相应正则表达式进行匹配的步骤进一步包括:
将上述结构化数据中的各元素与上述正则表达式树中的相应节点进行匹配。
7.权利要求5或6所述的分析结构化数据的方法,其中在上述匹配的步骤中进行延迟匹配。
8.权利要求1所述的分析结构化数据的方法,其中上述模式信息保存在模式文件中。
9.权利要求1所述的分析结构化数据的方法,还包括:
根据上述模式信息中与上述结构化数据的结构和验证有关的信息,将根据该模式信息预先设定的取值路径映射到该模式信息中的层级关系中的具体取值位置;以及
根据上述与结构化数据的结构和验证有关的信息以及上述具体取值位置,从上述结构化数据中提取数据。
10.权利要求9所述的分析结构化数据的方法,其中上述取值路径是以XPath格式设定的。
11.一种转换结构化数据的方法,其特征在于,包括:
利用权利要求1~10中的任意一项所述的分析结构化数据的方法对上述结构化数据进行分析;以及
将分析后的上述结构化数据从源格式转换为目标格式。
12.一种拆分结构化数据的方法,其特征在于,包括:
利用权利要求1~10中的任意一项所述的分析结构化数据的方法对上述结构化数据进行分析;以及
将分析后的上述结构化数据拆分为多个部分数据。
13.权利要求12所述的拆分结构化数据的方法,还包括:
分别对上述拆分后的多个部分数据添加标头,以封装为目标格式的包。
14.一种分析结构化数据的装置,其特征在于,包括:
分析/验证模块,用于利用预先定义的与上述结构化数据相对应的模式信息,对上述结构化数据进行分析和验证;
其中,上述模式信息包括利用正则表达式表示的与该结构化数据的结构和验证有关的信息。
15.权利要求14所述的分析结构化数据的装置,其中上述模式信息包括:用于验证上述结构化数据的、与上述结构化数据的层级关系相对应的每一个元素的值的正则表达式。
16.权利要求14所述的分析结构化数据的装置,其中上述分析/验证模块进一步包括:
模式信息分析单元,用于对上述模式信息进行分析,以获得其中与上述结构化数据的结构和验证有关的信息;
正则表达式组装单元,用于根据上述与结构化数据的结构和验证有关的信息,将上述模式信息中的正则表达式按照层级关系组装为正则表达式树;以及
验证单元,用于将上述结构化数据中的各元素与上述正则表达式树中的相应节点进行匹配,以验证该结构化数据。
17.权利要求14所述的分析结构化数据的装置,还包括取值模块,该取值模块包括:
取值路径映射单元,用于根据上述模式信息中与上述结构化数据的结构和验证有关的信息,将根据该模式信息预先设定的取值路径映射到该模式文件中的层级关系中的具体取值位置;以及
搜索/取值单元,用于根据上述与结构化数据的结构和验证有关的信息以及上述具体取值位置,从上述结构化数据中提取数据。
18.权利要求14所述的分析结构化数据的装置,还包括:
模式信息设定单元,用于使用户能够设定上述模式信息;以及
取值路径设定单元,用于使用户能够设定取值路径。
19.一种转换结构化数据的装置,其特征在于,包括:
权利要求14~18中的任意一项所述的分析结构化数据的装置;以及
转换单元,用于将由上述分析结构化数据的装置分析后的上述结构化数据从源格式转换为目标格式。
20.一种拆分结构化数据的装置,其特征在于,包括:
权利要求14~18中的任意一项所述的分析结构化数据的装置;以及
拆分单元,用于将由上述分析结构化数据的装置分析后的上述结构化数据拆分为多个部分数据。
21.权利要求20所述的拆分结构化数据的装置,还包括:
包封装单元,用于分别对上述拆分后的多个部分数据添加标头,以封装为目标格式的包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100809256A CN101520770B (zh) | 2008-02-29 | 2008-02-29 | 分析、转换和拆分结构化数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100809256A CN101520770B (zh) | 2008-02-29 | 2008-02-29 | 分析、转换和拆分结构化数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101520770A true CN101520770A (zh) | 2009-09-02 |
CN101520770B CN101520770B (zh) | 2011-05-04 |
Family
ID=41081366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100809256A Expired - Fee Related CN101520770B (zh) | 2008-02-29 | 2008-02-29 | 分析、转换和拆分结构化数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101520770B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609459A (zh) * | 2012-01-12 | 2012-07-25 | 神州数码网络(北京)有限公司 | 基于正则表达式的字符串匹配方法和装置 |
CN102841886A (zh) * | 2011-06-21 | 2012-12-26 | 北大方正集团有限公司 | 拆分文档的方法和装置 |
CN102982027A (zh) * | 2011-09-02 | 2013-03-20 | 北大方正集团有限公司 | 提取文档中内容的方法和装置 |
CN102103574B (zh) * | 2009-12-17 | 2013-04-24 | 北大方正集团有限公司 | 一种格式化输出书版小样文件内容的方法及系统 |
CN103942032A (zh) * | 2013-01-18 | 2014-07-23 | 纽海信息技术(上海)有限公司 | 数据分拆处理系统及方法 |
CN104462268A (zh) * | 2014-11-24 | 2015-03-25 | 深圳市比一比网络科技有限公司 | 一种html文档信息抽取表达式的方法及系统 |
CN104462157A (zh) * | 2013-09-24 | 2015-03-25 | 北大方正集团有限公司 | 一种文本数据二次结构化的方法及装置 |
CN104881409A (zh) * | 2014-02-27 | 2015-09-02 | 北京方捷软件有限公司 | 一种文档加载的方法及装置 |
CN106126684A (zh) * | 2016-06-29 | 2016-11-16 | 联想(北京)有限公司 | 一种生成网络爬虫配置文件的方法及装置 |
CN109683978A (zh) * | 2017-10-17 | 2019-04-26 | 阿里巴巴集团控股有限公司 | 一种流式布局界面渲染的方法、装置以及电子设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102523219B (zh) * | 2011-12-16 | 2015-01-14 | 清华大学 | 正则表达式匹配系统及匹配方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5202977A (en) * | 1990-07-13 | 1993-04-13 | Premenos Corp. | Edi translation system using plurality of communication processes and de-enveloping procedure corresponding to transmitted communication process |
-
2008
- 2008-02-29 CN CN2008100809256A patent/CN101520770B/zh not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102103574B (zh) * | 2009-12-17 | 2013-04-24 | 北大方正集团有限公司 | 一种格式化输出书版小样文件内容的方法及系统 |
CN102841886B (zh) * | 2011-06-21 | 2015-09-16 | 北大方正集团有限公司 | 拆分文档的方法和装置 |
CN102841886A (zh) * | 2011-06-21 | 2012-12-26 | 北大方正集团有限公司 | 拆分文档的方法和装置 |
CN102982027A (zh) * | 2011-09-02 | 2013-03-20 | 北大方正集团有限公司 | 提取文档中内容的方法和装置 |
CN102609459A (zh) * | 2012-01-12 | 2012-07-25 | 神州数码网络(北京)有限公司 | 基于正则表达式的字符串匹配方法和装置 |
CN102609459B (zh) * | 2012-01-12 | 2016-01-06 | 神州数码网络(北京)有限公司 | 基于正则表达式的字符串匹配方法和装置 |
CN103942032A (zh) * | 2013-01-18 | 2014-07-23 | 纽海信息技术(上海)有限公司 | 数据分拆处理系统及方法 |
CN103942032B (zh) * | 2013-01-18 | 2018-02-06 | 北京京东尚科信息技术有限公司 | 数据分拆处理系统及方法 |
CN104462157A (zh) * | 2013-09-24 | 2015-03-25 | 北大方正集团有限公司 | 一种文本数据二次结构化的方法及装置 |
CN104462157B (zh) * | 2013-09-24 | 2018-03-27 | 北大方正集团有限公司 | 一种文本数据二次结构化的方法及装置 |
CN104881409A (zh) * | 2014-02-27 | 2015-09-02 | 北京方捷软件有限公司 | 一种文档加载的方法及装置 |
CN104881409B (zh) * | 2014-02-27 | 2018-04-20 | 北京方捷软件有限公司 | 一种文档加载的方法及装置 |
CN104462268A (zh) * | 2014-11-24 | 2015-03-25 | 深圳市比一比网络科技有限公司 | 一种html文档信息抽取表达式的方法及系统 |
CN104462268B (zh) * | 2014-11-24 | 2017-12-12 | 深圳市比一比网络科技有限公司 | 一种html文档信息抽取表达式的方法及系统 |
CN106126684A (zh) * | 2016-06-29 | 2016-11-16 | 联想(北京)有限公司 | 一种生成网络爬虫配置文件的方法及装置 |
CN106126684B (zh) * | 2016-06-29 | 2019-12-24 | 联想(北京)有限公司 | 一种生成网络爬虫配置文件的方法及装置 |
CN109683978A (zh) * | 2017-10-17 | 2019-04-26 | 阿里巴巴集团控股有限公司 | 一种流式布局界面渲染的方法、装置以及电子设备 |
CN109683978B (zh) * | 2017-10-17 | 2022-06-14 | 阿里巴巴集团控股有限公司 | 一种流式布局界面渲染的方法、装置以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101520770B (zh) | 2011-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101520770B (zh) | 分析、转换和拆分结构化数据的方法和装置 | |
Elgazzar et al. | Clustering wsdl documents to bootstrap the discovery of web services | |
Fokkens et al. | NAF and GAF: Linking linguistic annotations | |
US7526490B2 (en) | Method of and system for providing positional based object to XML mapping | |
CN100399323C (zh) | 用于检验扩展标记语言文件的有效性的装置和方法 | |
US8312041B2 (en) | Resource description framework network construction device and method using an ontology schema having class dictionary and mining rule | |
US20100192057A1 (en) | Method and apparatus for generating an integrated view of multiple databases | |
CN101375247A (zh) | 服务创建方法,用于实现所述方法的计算机程序产品和计算机系统 | |
CN109740122A (zh) | 思维导图用例文件的转换方法及装置 | |
US7318194B2 (en) | Methods and apparatus for representing markup language data | |
CN102982010A (zh) | 提取文档结构的方法和装置 | |
CN110795697B (zh) | 逻辑表达式的获取方法、装置、存储介质以及电子装置 | |
CN101930455A (zh) | 一种结构化数据交换方法 | |
CN106649769A (zh) | 一种基于语义的xbrl数据到owl数据的转换方法 | |
CN102411602A (zh) | 一种基于 fpga 实现的xml 并行投机解析方法 | |
CN101517572A (zh) | Xml文档的语义感知处理 | |
US8904339B2 (en) | Method and system for modeling runtime behavior | |
CN100456296C (zh) | 一种多媒体文件搜索引擎的排序方法 | |
CN114168149A (zh) | 一种数据转换方法及装置 | |
CN112783836A (zh) | 信息交换方法、装置及计算机存储介质 | |
Cook | XML sets stage for efficient knowledge management | |
Foxvog et al. | Ontologizing EDI semantics | |
US7437714B1 (en) | Category partitioning markup language and tools | |
Zisman et al. | UML-based service discovery framework | |
Lacy et al. | Semantic Web: Implications for Modeling and Simulation System Interoperability |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110504 Termination date: 20120229 |