一种解析和创建xml数据的方法及系统的制作方法

文档序号:6584730阅读:170来源:国知局
专利名称:一种解析和创建xml数据的方法及系统的制作方法
技术领域
本发明涉及XML数据处理领域,尤其涉及一种解析和创建具有多种版本和子集的 XML文档中的XML数据的方法及系统。
背景技术
XML(可扩展标记语言)作为一种跨平台的标准数据交换格式而广泛应用于Web krvice、数据交换和语言交换等方面,是当前处理结构化文档信息的有力工具。在基于XML 的一些应用(比如,电子文档处理、互联网)中,存在“版本”和“子集”的概念。例如,在 对电子文档的处理中,常常需要在一个应用程序中兼容多种版本和子集的文档格式,比如, Microsoft Word 2003能够同时处理Word 97,Word 2000禾口 Word 2003等多种版本规范的 文档。再例如,网络浏览器程序能够同时处理XHTML 1.0 Strict,XHTML 1.0 Transitional 和XHTML 1.0 Frameset等多种子集规范的网页。在这样的XML应用中,就XML数据的解析和创建来说,要求应用程序能够将多种有 结构差异的XML数据转换为程序对象模型,或者将程序对象模型转换为多种有结构差异的 XML数据。目前公知的XML数据与程序对象模型之间的转换方法一般有以下两种第一种转 换方法是将转换逻辑与程序对象模型结合,转换逻辑由人工或机器创建,程序模型一般直 接处理XML数据,其中,机器创建转换逻辑的方法的现有代表技术有JAXB和XMLBeans ;第 二种转换方法是将转换逻辑与程序对象模型分离,把XML结构定义为一种元数据,使用非 特定的方法处理XML数据,并且根据定义的元数据完成XML数据与程序对象模型的相互转 换,有代表性的现有技术有Hibernate和Castor。现有的这些转换方法对于具有多种版本和子集的XML文档具有很大的局限性。具 体而言,对于人工创建转换逻辑的方法,需要人为地针对文档格式的不同版本和子集中每 一处XML结构变化分别进行处理,难以实现和维护。对于机器创建转换逻辑的方法,都是针 对一种XML结构定义生成一套程序对象模型,无法同时处理多种XML结构定义。而对于第 二种转换方法,需要针对每一种XML结构,定义一套XML结构定义元数据,这样造成了程序 资源的浪费,而且多种元数据之间有大量冗余部分,对具有多种版本和子集的XML文档进 行修改和维护时需要同步处理多个XML结构定义元数据。例如,在申请日为2005年11月四日的第200510127039.0号中国专利“用于对象 模型与xml间转换的可共享双向方法和系统”中,使用元模型来描述对象模型以及在该模型 中不同对象彼此如何相关联,并且利用多个翻译器来定义每个XML标签名与相关联元模型 的结构特征之间的映射关系。通过这种方法,可使用数个不同的解析机制从同一 XML文件 载入同样的对象模型。但是,每个XML标签与元模型的结构特征之间的映射是基本固定的, 当每个XML标签结构或者对象模型结构发生变化时,需要改变元模型和翻译器类来实现映 射。比如,对于多种版本的电子文档,一个XML结构元素很可能包括不同的属性,根据这种 方法,需要针对每个文档版本,改变元模型中的结构特征及其与翻译器的映射关系,可能还需要增加翻译器来实现映射。也就是说,对于不同的XML结构,需要重新定义元模型及其相 应的翻译器,其对应的XML结构元数据也改变。因此,这样的元数据属于一种静态的XML结 构定义元数据,不能很好地适用于使用具有多种版本和子集的XML文档的应用,具体体现 在,对这样的XML文档的修改和维护比较困难,应用程序实现逻辑复杂,并且同一版本和子 集的不同XML文档之间不能共享同一个XML结构定义元数据。

发明内容
为了解决以上第二种转换方法中的问题,本发明提供一种解析和创建具有多种版 本和子集的XML文档中的XML数据的方法及系统,以去除XML结构定义的冗余数据,节省计 算机资源,简化应用程序对XML文档的修改和维护,并使得在同一版本和子集的不同XML文 档之间可共享一份XML结构定义元数据。为了实现以上目的,本发明提供的XML数据解析和创建的方法包括以下步骤定 义XML文档格式的版本范围和子集范围、XML结构与程序对象模型之间的映射关系集合;根 据所述映射关系集合和当前处理的XML文档的版本标识和子集标识来动态创建XML结构定 义元数据;根据所述XML结构定义元数据完成XML数据与程序对象模型的相互转换。在所述映射关系集合中,每一条映射关系定义XML结构中的一个元素、程序对象 模型中的一个或多个元素与XML文档格式的版本范围和子集范围的对应关系。在所述映射关系集合中,XML文档格式的版本范围和子集范围是可选项,如果一条 映射关系未定义版本范围和子集范围,则使用所述映射关系集合中该条映射关系的父映射 关系中的XML结构元素的相应定义。 所述动态创建XML结构定义元数据的步骤还可包括将创建的XML结构定义元数据 加入缓存的步骤。在这种情况下,所述动态创建XML结构定义元数据的步骤包括以下步骤 在XML结构定义元数据缓存中查找当前处理的XML文档的版本标识和子集标识;如果没有 在XML结构定义元数据缓存中查找到所述标识,则从所述映射关系集合中定义的XML结构 根节点开始遍历映射关系集合,其中,对于遍历到的每一条映射关系,执行以下步骤判断 当前处理的XML文档的版本标识和子集标识是否在该条映射关系中的版本范围和子集范 围内;如果当前处理的XML文档的版本标识和子集标识位于所述范围内,则通过将该条映 射关系中定义的XML结构元素与程序对象模型元素的对应关系添加到XML结构定义元数据 中的方式来创建XML结构定义元数据;如果当前处理的XML文档的版本标识和子集标识不 在所述范围内,则继续向下遍历映射关系集合;遍历完之后将动态创建的XML结构定义元 数据加入缓存。相应地,根据本发明提供的用于解析和创建XML数据的系统包括标识获取单元, 获取当前处理的XML文档的版本标识和子集标识;XML数据处理单元,定义XML文档格式的 版本范围和子集范围、XML结构与程序对象模型之间的映射关系集合,根据所述映射关系集 合和通过标识获取单元获取的版本标识和子集标识来动态创建XML结构定义元数据,并根 据所述XML结构定义元数据完成XML数据与程序对象模型的相互转换。所述XML数据处理单元包括创建单元,定义所述映射关系集合,并根据所述映射 关系集合和通过标识获取单元获取的版本标识和子集标识来动态创建XML结构定义元数 据;转换单元,根据所述XML结构定义元数据完成XML数据与程序对象模型的相互转换。
所述XML数据处理单元还可包括缓存单元,用于缓存通过创建单元创建的XML结 构定义元数据。相对于现有技术中静态的XML结构定义元数据而言,本发明使用一个XML结构映 射关系集合,就可创建出符合多种版本和子集的XML文档格式的XML结构定义元数据,没有 冗余的XML结构定义,节省了对计算机资源的占用,同时简化了应用程序对XML文档的修改 和维护;而且,在处理XML数据时动态创建所需XML结构定义元数据,使得应用程序可以用 统一的方法处理XML文档格式的多种版本和子集,降低了应用程序的实现复杂度。另一方面,通过将动态创建的XML结构定义元数据加入缓存,可使得在具有同种 版本标识和子集标识组合的XML文档之间共享一份XML结构定义元数据,相对于现有技术 中使用的静态的XML结构定义元数据而言,XML结构定义元数据缓存只占很小的额外计算 机资源消耗。


图1为电子文档中XML结构定义与文档版本的关系示例;图2为电子文档中XML结构定义与文档子集的关系示例;图3为根据本发明实施例的XML结构映射关系集合的示例;图4A和图4B为根据本发明实施例的解析和创建XML数据的方法的流程图;图5A和图5B为对于一个特定的电子文档格式版本标识和子集标识动态创建XML 结构定义元数据的示意图;图6是根据本发明的用于解析和创建具有多种版本和子集的XML文档中的XML数 据的系统的框图。
具体实施例方式本发明适用于基于具有多种版本和子集的XML文档的应用,其主要技术方案包 括首先,定义XML文档格式的版本范围和子集范围、XML结构与程序对象模型三者之间的 映射关系集合;然后,根据所述映射关系集合和当前处理的XML文档的版本标识和子集标 识来动态创建XML结构定义元数据;最后,根据所述XML结构定义元数据完成XML数据与程 序对象模型的相互转换,具体地讲,根据所述XML结构定义元数据将多种具有结构差异的 XML数据解析为程序对象模型和从程序对象模型创建多种具有结构差异的XML数据,该步 骤的具体处理方法由应用程序所使用的XML处理方法决定,属于现有技术,因此,在本说明 书中省略其描述。下面将结合附图和实施例对本发明进行详细说明。在以下实施例中,以电子文档 作为具有多种版本和子集的XML文档的应用为例来说明根据本发明的解析和创建这样的 XML文档中的XML数据的方法及系统。对于电子文档中使用XML作为数据表示方式的情况,“版本”和“子集”这两个概 念对XML结构定义的影响体现在不同的文档格式版本之间,XML的结构定义(包括节点、 属性、文本数据)会有增加、删除,为了保持向下兼容性,一般不会有冲突的修改;同一文档 格式版本的不同子集之间,XML的结构定义不会有相互冲突,所有子集中出现的结构都包含 在全集中。图1和图2分别示出电子文档中XML结构定义与文档版本和文档子集的关系示例。如图1所示,电子文档格式规范的不同版本中,XML根节点101包含了所有不同的 子节点集合;在102所示的最早的版本1定义中,包含3个子节点;在103所示的版本2定 义中,除了包含102中所有的3个子节点之外,增加了 1个子节点;在104所示的版本3定 义中,删除了 1个在102和103中都包含的子节点,包含了 103中其它3个子节点,并且增 加了 2个子节点。如图2所示,在电子文档格式规范的不同子集中,XML根节点201包含了所有不同 的子节点集合;202所示的是全集定义,包含所有的6个子节点;在203、204所示的两个不 同子集中,各包含4各子节点,但都没有超出全集202的范围,并且203、204所包含的子节 点有重叠,202中有1个子节点没有被203和204包含。在本发明实施例中,所述映射关系集合的具体定义如下每一条映射关系定义了 XML结构中的一个元素与程序对象模型中的一个或多个 元素的对应关系;每一条映射关系还定义了 XML结构中的一个元素与电子文档格式的版本范围和 子集范围的对应关系,该对应关系的含义是,对于任何特定版本和子集的文档格式定义,如 果该版本和子集包含在该条映射关系中的版本范围和子集范围之内,则在该特定的文档格 式定义中,存在该条映射关系中的XML结构元素;在每一条映射关系中电子文档格式的版本范围和子集范围是可选项,如果一条映 射关系未定义版本范围和子集范围,则使用所述映射关系集合中该条映射关系的父映射关 系中的XML结构元素的相应定义;映射关系之间的结构性从属信息反映各XML结构元素之间的结构关系。以下将参考图3详细描述根据本发明实施例的XML结构映射关系集合。参照图3,标号301-306分别表示6条XML结构映射关系。以映射关系301为例, 在该条映射关系中,XML结构是<Root>节点,电子文档版本范围是版本1-5,电子文档格式 子集范围是所有子集,对应的程序对象模型是程序对象R。这条映射关系反映如下关系 XML节点<Root>在电子文档格式规范的版本1-5的所有子集中有定义;在解析XML数据时, <Root>节点中的数据解析为程序对象R ;在创建XML数据时,<Root>节点中的数据从程序 对象R中获取。另外,映射关系301包含两个子映射关系302和303,这表示在XML结构中, <Root>节点包含两个子节点<Parentl>和<Parent2>。此外,在子映射关系中版本范围和子集范围可以省略,在这种情况下,根据映射关 系之间的结构性信息找到父映射关系,使用父映射关系中的XML结构元素的相应定义。例 如,映射关系304同时省略了版本范围和子集范围,映射关系305省略了子集范围,则根据 其父映射关系302中的数据定义可知,304定义的版本范围是版本1-5,子集范围是子集A、 B,305定义的版本范围是版本3-5,子集范围是A、B。图4A是根据本发明实施例的解析和创建XML数据的方法的流程图。参照图4A,该 方法包括以下步骤步骤401、获取当前处理的电子文档的版本标识和子集标识;步骤404、从根节点开始遍历XML结构映射关系集合,对每一个具体的映射关系, 判断当前处理的电子文档的版本标识和子集标识是否在该条映射关系中的版本范围和子集范围内,如果当前处理的电子文档的版本标识和子集标识位于所述范围内,则执行步骤 405,如果当前处理的电子文档的版本标识和子集标识不在所述范围内,则继续向下遍历映 射关系集合并重复以上步骤,直到遍历完映射关系集合为止;步骤405、利用XML结构和程序对象的对应关系,动态创建XML结构定义元数据,具 体地讲,通过将所述映射关系所定义的XML结构元素与程序对象模型元素的对应关系添加 到XML结构定义元数据中的方式来动态创建XML结构定义元数据,具体的元数据创建方法 和创建的元数据格式由底层所使用的XML处理方法决定;步骤407、使用底层所使用的XML处理方法和动态创建的XML结构定义元数据来处 理XML数据,完成XML数据与程序对象模型的相互转换。需要指出的是,在以上方法中,每当遍历到当前处理的电子文档格式的版本范围 和子集范围在其版本范围和子集范围之内的映射关系时,就将该映射关系中的XML结构元 素和程序对象模型元素的对应关系添加到XML结构定义元数据中,从而逐渐完成XML结构 定义元数据的创建,也就是说,遍历XML结构映射关系集合、选取当前处理电子文档格式所 具有的XML结构元素和程序对象模型元素的对应关系以及创建XML结构定义元数据的过程 是同步进行的。在其它实施例中,还可以首先在遍历XML结构映射关系集合的同时选取出 当前处理电子文档格式所具有的全部XML结构元素和程序对象模型元素的对应关系,然后 根据这些XML结构元素和程序对象模型元素的对应关系来创建XML结构元素。在以上方法中,还可将动态创建的XML结构定义元数据加入缓存,这样就能够实 现在具有同一版本和子集的不同电子文档之间共享一份XML结构定义元数据。以下将参照 图4B说明使用缓存机制的方法与参照图4A描述的方法的不同之处。图4B与图4A的不同之处在于增加了步骤402、403和406,其余步骤与图4A相同。在步骤402中,在XML结构定义元数据缓存中以在步骤401中获取的版本标识和 子集标识为键进行查询。接着,在步骤403中,判断是否找到XML结构定义元数据,如果在步骤402中在XML 结构定义元数据缓存中找到对应的值,则执行步骤407,如果在XML结构定义元数据缓存中 不存在在步骤401中获取的版本标识和子集标识,则执行步骤404。在步骤405中动态创建XML结构定义元数据之后,在步骤406中,将创建的XML结 构定义元数据加入缓存。以下将参照图5A和图5B通过一个具体实施例来详细说明步骤404(遍历XML结 构映射关系集合)和步骤405(动态创建XML结构定义元数据)的处理过程。在本实施例中,使用Castor作为XML处理方法,则XML结构定义元数据格式本身 也是一个XML文档,创建时可以使用DOM等方式创建XML文档,再将XML文档保存为字符串 形式。另外,XML结构定义元数据缓存采取公知的“键-值”对存储技术,能够对某一特定 的键,存储、查询一个唯一的值,其中,版本标识和子集标识共同组成了键,XML结构定义元 数据为值,也就是说,XML结构定义元数据缓存中保存的键是在步骤401中获取的版本标识 和子集标识,保存的值是在步骤405中得到的字符串形式的XML文档。在步骤407中,使用 Castor处理方法和获取的XML结构定义元数据来处理XML数据,完成XML数据和程序对象 模型之间的转换。在图5A中,301-306分别表示处理过程所需的XML结构映射关系集合,501表示在步骤401中获取的当前处理的电子文档的版本标识是4,子集标识是A,502对应于图4A和 图4B中的步骤404和405,503-506表示通过步骤502处理所选取出的电子文档格式版本 4、子集A中定义的XML文档结构,507是创建的Castor格式的XML结构定义元数据。步骤502的具体处理过程是从301开始遍历XML结构映射关系集合,在本实施例 中,遵循深度优先的遍历顺序,依次遍历301、302、304、305、303、306,当然,也可采用其它顺 序对XML结构映射关系集合进行遍历;对每一个映射关系,比较其版本范围、子集范围定义 和501中的版本标识、子集标识,例如305定义的版本范围是版本1-5,子集范围是子集A、 B,501所示的版本4、子集A位于该范围内,所以305中定义的XML结构和程序对象被选取 出来成为506 ;而303定义的版本范围是1-3,501所示的版本4不在此范围内,所以303对 应的XML结构不被选取;使用选取的503-506,创建507所示的XML文档,即为所需Castor 格式的XML结构定义元数据。注意,如上所述,步骤502中的遍历XML结构映射关系集合、选取具有501中的版 本标识和子集标识的电子文档格式所具有的XML结构和程序对象、创建XML结构定义元数 据的过程也可以是同步进行的,即在处理过程中,选取出来的XML结构元素503-506并不必 要同时出现以创建XML结构定义元数据507 ;可以在选取503之后,即创建507的一部分, 在选取504之后,再创建507的对应部分,如此依次完成XML结构定义元数据的创建。图5B显示了对版本标识为2、子集标识为B的电子文档动态创建XML结构定义元 数据的过程,其中,502所表示的遍历、选取和创建过程与参照图5A描述的过程相同。在图 5B中,通过步骤502所选取的XML结构和程序对象分别表示为512-515,并据此创建了版本 标识为2、子集标识为B的电子文档的XML结构定义元数据516。从图5A和图5B可看出,本发明对于一种特定的电子文档版本标识和子集标识组 合,只需要动态创建一份XML结构定义元数据,然后将其缓存,从而使得该元数据可以在具 有该特定版本标识和子集标识的示同电子文档之间共享使用。相比于现有技术中使用的静 态XML结构定义元数据,缓存只占用很小的额外计算机资源消耗。需要指出的是,本实施例以电子文档作为具有多种版本和子集的XML文档的应 用,但是本发明可适用于满足以下条件的其它应用(1)应用于XML数据与程序对象模型之 间的相互转换;⑵存在版本、子集或类似的概念,在不同的版本和子集之间,XML结构定义 有修改。另外,所述XML结构映射关系集合不限于图3所示的映射关系集合,只要能表明XML 文档格式的版本范围和子集范围、XML结构与程序对象模型之间的映射关系的集合都应包 括在本发明的保护范围之内。相应地,本发明提供一种用于解析和创建具有多种版本和子集的XML文档中的 XML数据的系统,在该系统中,已知包括用于显示使用具有多种版本和子集的XML文档的应 用的显示单元。以下将参照图6描述该系统所特有的部分。从图6可看出,该系统还包括标识获取单元100,获取当前处理的XML文档的版 本标识和子集标识;XML数据处理单元200,定义XML文档格式的版本范围和子集范围、XML 结构与程序对象模型之间的映射关系集合,根据所述映射关系集合和通过标识获取单元 100获取的版本标识和子集标识来动态创建XML结构定义元数据,并根据所述XML结构定义 元数据完成XML数据与程序对象模型的相互转换。所述XML数据处理单元200包括创建单元202,定义所述映射关系集合,并根据
10所述映射关系集合和通过标识获取单元100获取的版本标识和子集标识来动态创建XML结 构定义元数据;转换单元206,根据所述XML结构定义元数据完成XML数据与程序对象模型 的相互转换,并将转换的结果传送给显示单元。这些单元的操作与以上参照图4A所描述的 方法步骤相同,因此,省略其描述。为了实现同一版本和子集的不同XML文档之间XML结构定义元数据的共享,所述 XML数据处理单元200还可包括缓存单元204,用于缓存通过创建单元创建的XML结构定义 元数据。此时的XML数据处理单元200的操作与以上参照图4B所描述的方法步骤相同,因 此,省略其描述。从以上描述可看出,本发明使用一个XML结构映射关系集合,就可创建出符合多 种版本和子集的XML文档格式的XML结构定义元数据,没有冗余的XML结构定义,能够节省 对计算机资源的占用和简化应用程序的修改和维护。另一方面,与XML文档格式的版本和 子集相关的定义只定义在XML结构映射关系集合中,应用程序以单一的方法就可以处理多 种版本和子集的XML文档,降低了应用程序的实现复杂度。此外,上述实施例中还使用了 缓存机制,从而使得在同一版本和子集的不同文档之间可共享使用一份XML结构定义元数 据。以上参考实施例描述了本发明。但是,本领域的技术人员应该理解,本发明不限于 所公开的实施例,在不脱离本发明的基本原理的情况下,任何类似的修改、替换或变形都应 包括在本发明的保护范围内,本发明的保护范围由权利要求限定。
权利要求
1.一种解析和创建XML数据的方法,包括步骤1、定义XML文档格式的版本范围和子集范围、XML结构与程序对象模型之间的映 射关系集合;步骤2、根据所述映射关系集合和当前处理的XML文档的版本标识和子集标识来动态 创建XML结构定义元数据;步骤3、根据所述XML结构定义元数据完成XML数据与程序对象模型的相互转换。
2.根据权利要求1所述的方法,其特征在于,在所述映射关系集合中,每一条映射关系 定义XML结构中的一个元素、程序对象模型中的一个或多个元素与XML文档格式的版本范 围和子集范围的对应关系。
3.根据权利要求2所述的方法,其特征在于,在所述映射关系集合中,XML文档格式的 版本范围和子集范围是可选项,如果一条映射关系未定义版本范围和子集范围,则使用所 述映射关系集合中该条映射关系的父映射关系中的XML结构元素的相应定义。
4.根据权利要求1所述的方法,其特征在于,所述步骤2包括从所述映射关系集合中定义的XML结构根节点开始遍历映射关系集合,其中,对于遍 历到的每一条映射关系,执行以下步骤判断当前处理的XML文档的版本标识和子集标识是否在该条映射关系中的版本范围 和子集范围内;如果当前处理的XML文档的版本标识和子集标识位于所述范围内,则通过将该条映射 关系中定义的XML结构元素与程序对象模型元素的对应关系添加到XML结构定义元数据中 的方式来创建XML结构定义元数据;如果当前处理的XML文档的版本标识和子集标识不在所述范围内,则继续向下遍历映 射关系集合。
5.根据权利要求1所述的方法,其特征在于,所述步骤2还包括将创建的XML结构定义 元数据加入缓存的步骤。
6.根据权利要求5所述的方法,其特征在于,所述步骤2包括在XML结构定义元数据缓存中查找当前处理的XML文档的版本标识和子集标识;如果没有在XML结构定义元数据缓存中查找到所述标识,则从所述映射关系集合中定 义的XML结构根节点开始遍历映射关系集合,其中,对于遍历到的每一条映射关系,执行以 下步骤判断当前处理的XML文档的版本标识和子集标识是否在该条映射关系中的版本范围 和子集范围内;如果当前处理的XML文档的版本标识和子集标识位于所述范围内,则通过将该条映射 关系中定义的XML结构元素与程序对象模型元素的对应关系添加到XML结构定义元数据中 的方式来创建XML结构定义元数据;如果当前处理的XML文档的版本标识和子集标识不在所述范围内,则继续向下遍历映 射关系集合;遍历完之后将动态创建的XML结构定义元数据加入缓存。
7.根据权利要求5所述的方法,其特征在于,所述XML结构定义元数据缓存采取 “键-值”对存储技术,其中,版本标识和子集标识共同组成键,XML结构定义元数据是值。
8.一种用于解析和创建XML数据的系统,包括用于显示使用具有多种版本和子集的 XML文档的应用的显示单元,其特征在于,该系统还包括标识获取单元,获取当前处理的XML文档的版本标识和子集标识; XML数据处理单元,定义XML文档格式的版本范围和子集范围、XML结构与程序对象模 型之间的映射关系集合,根据所述映射关系集合和通过标识获取单元获取的版本标识和子 集标识来动态创建XML结构定义元数据,并根据所述XML结构定义元数据完成XML数据与 程序对象模型的相互转换。
9.根据权利要求8所述的系统,其特征在于,所述XML数据处理单元包括创建单元,定义所述映射关系集合,并根据所述映射关系集合和通过标识获取单元获 取的版本标识和子集标识来动态创建XML结构定义元数据;转换单元,根据所述XML结构定义元数据完成XML数据与程序对象模型的相互转换,并 将转换的结果传送给显示单元。
10.根据权利要求9所述的系统,其特征在于,所述创建单元执行以下操作从所述映射关系集合中定义的XML结构根节点开始遍历映射关系集合,其中,对于遍 历到的每一条映射关系,执行以下步骤判断当前处理的XML文档的版本标识和子集标识是否在该条映射关系中的版本范围 和子集范围内;如果当前处理的XML文档的版本标识和子集标识位于所述范围内,则通过将该条映射 关系中定义的XML结构元素与程序对象模型元素的对应关系添加到XML结构定义元数据中 的方式来创建XML结构定义元数据;如果当前处理的XML文档的版本标识和子集标识不在所述范围内,则继续向下遍历映 射关系集合。
11.根据权利要求9所述的系统,其特征在于,所述XML数据处理单元还包括缓存单元, 用于缓存通过创建单元创建的XML结构定义元数据。
12.根据权利要求11所述的系统,其特征在于,所述创建单元执行以下操作 在缓存单元中查找当前处理的XML文档的版本标识和子集标识;如果没有在缓存单元中查找到所述标识,则从所述映射关系集合中定义的XML结构根 节点开始遍历映射关系集合,其中,对于遍历到的每一条映射关系,执行以下步骤判断当前处理的XML文档的版本标识和子集标识是否在该条映射关系中的版本范围 和子集范围内;如果当前处理的XML文档的版本标识和子集标识位于所述范围内,则通过将该条映射 关系中定义的XML结构元素与程序对象模型元素的对应关系添加到XML结构定义元数据中 的方式来创建XML结构定义元数据;如果当前处理的XML文档的版本标识和子集标识不在所述范围内,则继续向下遍历映 射关系集合;遍历完之后将动态创建的XML结构定义元数据加入缓存单元。
13.根据权利要求11所述的系统,其特征在于,所述缓存单元采取“键一值”对存储技 术,其中,版本标识和子集标识共同组成键,XML结构定义元数据是值。
14.根据权利要求8所述的系统,其特征在于,在所述映射关系集合中,每一条映射关系定义XML结构中的一个元素、程序对象模型中的一个或多个元素与XML文档格式的版本 范围和子集范围的对应关系。
15.根据权利要求14所述的系统,其特征在于,在所述映射关系集合中,XML文档格式 的版本范围和子集范围是可选项,如果一条映射关系未定义版本范围和子集范围,则使用 所述映射关系集合中该条映射关系的父映射关系中的XML结构元素的相应定义。
全文摘要
本发明提供一种解析和创建具有多种版本和子集的XML文档中的XML数据的方法和系统。该方法包括定义XML文档格式的版本范围和子集范围、XML结构与程序对象模型之间的映射关系集合;根据映射关系集合和当前处理的XML文档的版本标识和子集标识来动态创建XML结构定义元数据;根据XML结构定义元数据完成XML数据与程序对象模型的相互转换。相应地,提供解析和创建XML数据的系统。本发明使用一个映射关系集合,创建出符合多种版本和子集的XML结构定义元数据,从而去除了XML结构定义的冗余数据,节省了计算机资源,简化了应用程序的修改和维护,并且同一版本和子集的不同XML文档之间可共享一份XML结构定义元数据。
文档编号G06F17/30GK102073662SQ20091023824
公开日2011年5月25日 申请日期2009年11月23日 优先权日2009年11月23日
发明者张磊, 王晓磊, 王毅 申请人:北京北大方正技术研究院有限公司, 北大方正集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1