CN111259634B - Xsd格式文件的解析方法及生成方法 - Google Patents
Xsd格式文件的解析方法及生成方法 Download PDFInfo
- Publication number
- CN111259634B CN111259634B CN202010033769.9A CN202010033769A CN111259634B CN 111259634 B CN111259634 B CN 111259634B CN 202010033769 A CN202010033769 A CN 202010033769A CN 111259634 B CN111259634 B CN 111259634B
- Authority
- CN
- China
- Prior art keywords
- xsd
- class
- node
- file
- converting
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明涉及一种XSD格式文件的解析方法与生成方法,解析方法包括:初始化StreamReader类将XSD文件路径带入,将XSD文件转换为Stream流文件,初始化XmlDocument类对象,将该文件流转换为对应的XmlDocument类;获取该文档的N个Node节点块,节点对象代表XmlElement文档树中一个单独的节点;获取对应的节点的名称,获取该节点的属性集合;最终完成对XSD的解析,生成对应的XSD解析类。本发明可以直接调用本发明dll类库中的相关方法对XSD文件进行数据解析与生成的XSD格式文件。
Description
技术领域
本发明属于数据管理领域,涉及一种文件的解析方法及生成方法,尤其涉及一种XSD格式文件的解析方法与生成方法。
背景技术
XSD即XML Schema语言,描述了XML文档的结构,可以通过XSD指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的,它是DTD的替代品,XMLSchema描述了XML文档的结构。可以用一个指定的XML Schema来验证某个XML文档,以检查该XML文档是否符合其要求。文档设计者可以通过XML Schema指定一个XML文档所允许的结构和内容,并可据此检查一个XML文档是否是有效的。XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它。
一个XML Schema会定义:文档中出现的元素、文档中出现的属性、子元素、子元素的数量、子元素的顺序、元素是否为空、元素和属性的数据类型、元素或属性的默认和固定值,XSD是DTD替代者的原因,一是据将来的条件可扩展,二是比DTD丰富和有用,三是用XML书写,四是支持数据类型,五是支持命名空间。
在现有技术中数据集成类项目中通常用XSD文件作为需要集成的数据内容描述的主要因有:可扩展、支持数据类型、支持命名空间等。XSD本身是一个XML文档,它符合XML语法结构,所以虽可用通用的XML解析器解析它,然而并没有解析与生成复杂XSD格式文件的类库供直接调用使用。
技术方案
为了解决背景技术中存在的上述技术问题,本发明提供了一种可以直接调用本发明dll类库中的相关方法对XSD文件进行数据解析与生成的XSD格式文件的解析方法与生成方法。
为了实现上述目的,本发明采用如下技术方案:
一种XSD格式文件的解析方法,其特征在于:所述XSD格式文件的解析方法包括以下步骤:
1)初始化StreamReader类将XSD文件路径带入,将XSD文件转换为Stream流文件,其次初始化XmlDocument类对象,通过对象的Load方法将该文件流转换为对应的XmlDocument类;
2)调用XmlDocument类内部的DocumentElement方法,将XmlDocument类转换为对应的XmlElement文档类,通过内部的属性值ChildNodes,获取该文档的N个Node节点块,节点对象代表XmlElement文档树中一个单独的节点;
3)将拆分出来的Node节点块通过点LocalName的属性获取对应的节点的名称,再通过Attributes方法获取该节点的属性集合;
4)最终完成对XSD的解析,生成对应的XSD解析类。
上述步骤3)的具体实现方式是:利用C#的反射机制,提取element属性值,获取的每个节点块对应的属性值以及类型值,通过自定义类对象并赋值的方式,将Node节点转换为节点类。
一种XSD格式文件的生成方法,其特征在于:所述XSD格式文件的生成方法包括以下步骤:
1)初始化StreamReader类将XSD文件路径带入,将XSD文件转换为Stream流文件,其次初始化XmlDocument类对象,通过对象的Load方法将该文件流转换为对应的XmlDocument类;
2)调用XmlDocument类内部的DocumentElement方法,将XmlDocument类转换为对应的XmlElement文档类,通过内部的属性值ChildNodes,获取该文档的N个Node节点块,节点对象代表XmlElement文档树中一个单独的节点;
3)将拆分出来的Node节点块通过点LocalName的属性获取对应的节点的名称,再通过Attributes方法获取该节点的属性集合;
4)最终完成对XSD的解析,生成对应的XSD解析类;
5)将XSD解析类的对应属性以及属性值赋值给新定义的XmlAttribute类对象,初始化时给与对应的类名称和值;
6)将节点类型类的属性名以及属性值衣服赋值给新定义的XmlElement类对象,通过初始化带入方式赋值,节点类型类与节点类型XmlElement的属性名称以及属性值必须保持完全一致;
7)定义一个新的XmlDocument类对象,将上述节点类型XmlElement通过Add的方法加入到XmlDocument的Root根节点属性下,从而完成对XmlDocument文档信息类的组装;
8)创建一个MemoryStream文件流对象,利用XmlDocument文档信息类的Save方法将XmlDocument文档进行保存操作。
上述步骤3)的具体实现方式是:利用C#的反射机制,提取element属性值,获取的每个节点块对应的属性值以及类型值,通过自定义类对象并赋值的方式,将Node节点转换为节点类。
上述步骤5)的具体实现方式是:通过该方式将XSD类转换为多个节点类型类,此方式利用的C#的反射填充element属性值机制,形成的节点类型类必须与XSD类属性名以及值完全一致。
一种用于实现XSD格式文件的解析方法或XSD格式文件的生成方法的操作系统,其特征在于:所述操作系统包括:
读取模块:在XSD格式文件进行解析过程中,通过StreamReader类将选定的XSD文件进行读取操作,将其转换为Stream文件流形式;在XSD格式文件进行生成过程中,将XmlDocument文档信息转换为XSD文档信息,为展示XSD文件生成的成果展示;
解析模块:在XSD格式文件进行解析过程中,将读取模块的XSD文件流进行解析,从而将XSD文件流转换为XmlDocument文档信息类型,在XSD格式文件进行生成过程中,将XmlDocument文档转换为XSD文件信息;
节点类型模块:在XSD格式文件进行解析过程中,将XmlDocument文档信息转化为节点类型,即用特定的字符串代表特定的节点,包含节点的类型以及值,在XSD格式文件进行生成过程中,将节点类型类转换为对应的节点类型,必须与节点类型类一一对应,完全匹配;
节点类模块:在XSD格式文件进行解析过程中,将节点类型转化为一一对应的节点类或者对象;节点类必须与节点类型相对应;在XSD格式文件进行生成过程中,将XSD类通过反射提取机制,转换为节点类;
XSD类模块:在XSD格式文件进行解析过程中,将节点类组合生成对应的XSD类,实则为C#对象;展示对XSD文件的解析成果;在XSD格式文件进行生成过程中,将XSD类通过反射填充机制转换为节点类,开始进一步的生成XSD文件操作。
本发明的优点是:
本发明提供了一种XSD格式文件的解析方法、XSD格式文件的生成方法以及用于实现两种方法的操作系统,本发明利用C#反射、通用的XML解析器等技术对XSD格式文件的解析与生成进行了封装,只要符合指定格式要求,可以直接调用本发明dll类库中的相关方法对XSD文件进行数据解析与生成等操作。本发明针对将来的额外内容是可扩展的,内容比文档类型定义丰富,作用也更大,解析与生成复杂XSD格式文件的类库可供直接调用。
附图说明
图1是本发明所提供操作系统的框图。
具体实施方式
本发明提供了一种XSD格式文件的解析方法,该方法包括:
1)初始化StreamReader类将XSD文件路径带入,可将XSD文件转换为Stream流文件,其次初始化XmlDocument类对象,通过对象的Load方法将该文件流转换为对应的XmlDocument类;
2)调用XmlDocument类内部的DocumentElement方法,将XmlDocument类转换为对应的XmlElement文档类,通过内部的属性值ChildNodes,获取该文档的N个Node节点块,节点对象代表XmlElement文档树中一个单独的节点,例如:P1、P2、P3……Pn;
3)将拆分出来的Node节点块通过点LocalName的属性获取对应的节点的名称,再通过Attributes方法获取该节点的属性集合,此方式利用了C#的反射机制,提取element属性值,获取的每个节点块对应的属性值以及类型值,通过自定义类对象并赋值的方式,将Node节点转换为节点类,其大小写必须严格一致,例如:P′1、P′2、P′3……P′n;
4)最终完成对XSD的解析,生成对应的XSD解析类。
同时,本发明还提供了一种XSD格式文件的生成方法,该方法包括以下步骤:
1)初始化StreamReader类将XSD文件路径带入,可将XSD文件转换为Stream流文件,其次初始化XmlDocument类对象,通过对象的Load方法将该文件流转换为对应的XmlDocument类;
2)调用XmlDocument类内部的DocumentElement方法,将XmlDocument类转换为对应的XmlElement文档类,通过内部的属性值ChildNodes,获取该文档的N个Node节点块,节点对象代表XmlElement文档树中一个单独的节点,例如:P1、P2、P3……Pn;
3)将拆分出来的Node节点块通过点LocalName的属性获取对应的节点的名称,再通过Attributes方法获取该节点的属性集合,此方式利用了C#的反射机制,提取element属性值,获取的每个节点块对应的属性值以及类型值,通过自定义类对象并赋值的方式,将Node节点转换为节点类,其大小写必须严格一致,例如:P′1、P′2、P′3……P′n;
4)最终完成对XSD的解析,生成对应的XSD解析类;
5)将XSD解析类的对应属性以及属性值赋值给新定义的XmlAttribute类对象,初始化时给与对应的类名称和值,通过该方式将XSD类转换为多个节点类型类,此方式利用的C#的反射填充element属性值机制,形成的节点类型类必须与XSD类属性名以及值完全一致,例如:P′1、P′2、P′3……P′n;
6)将节点类型类的属性名以及属性值衣服赋值给新定义的XmlElement类对象,通过初始化带入方式赋值,节点类型类与节点类型XmlElement的属性名称以及属性值必须保持完全一致,例如P1、P2、P3……Pn;
7)定义一个新的XmlDocument类对象,将上述节点类型XmlElement通过Add的方法加入到XmlDocument的Root根节点属性下,从而完成对XmlDocument文档信息类的组装;
8)创建一个MemoryStream文件流对象,利用XmlDocument文档信息类的Save方法将XmlDocument文档进行保存操作;
本发明在提供上述两种方法的同时,还提供了一种用于实现该方法的操作系统,参见图1,该操作系统包括:
读取模块:在解析过程中,通过StreamReader类将选定的XSD文件进行读取操作,将其转换为Stream文件流形式;在生成过程中,将XmlDocument文档信息转换为XSD文档信息,为展示XSD文件生成的成果展示;
解析模块:在解析XSD文件的过程中,将读取模块的XSD文件流进行解析,从而将XSD文件流转换为XmlDocument文档信息类型,在生成XSD文件的过程中,将XmlDocument文档转换为XSD文件信息;
节点类型模块:在解析过程中,将XmlDocument文档信息转化为节点类型,即用特定的字符串代表特定的节点,包含节点的类型以及值,在生成过程中,将节点类型类转换为对应的节点类型,必须与节点类型类一一对应,完全匹配;
节点类模块:在解析过程中,将节点类型转化为一一对应的节点类或者对象;节点类必须与节点类型相对应;在生成过程中,将XSD类通过反射提取机制,转换为节点类;
XSD类模块:在解析过程中,将节点类组合生成对应的XSD类,实则为C#对象;展示对XSD文件的解析成果;在生成过程中,将XSD类通过反射填充机制转换为节点类,从而开始进一步的生成XSD文件操作。
Claims (3)
1.一种XSD格式文件的解析方法,其特征在于:所述XSD格式文件的解析方法包括以下步骤:
1)初始化StreamReader类将XSD文件路径带入,将XSD文件转换为Stream流文件,其次初始化XmlDocument类对象,通过对象的Load方法将该文件流转换为对应的XmlDocument类;
2)调用XmlDocument类内部的DocumentElement方法,将XmlDocument类转换为对应的XmlElement文档类,通过内部的属性值ChildNodes,获取该文档的N个Node节点块,节点对象代表XmlElement文档树中一个单独的节点;
3)将拆分出来的Node节点块通过点LocalName的属性获取对应的节点的名称,再通过Attributes方法获取该节点的属性集合;具体实现方式是:利用C#的反射机制,提取element属性值,获取的每个节点块对应的属性值以及类型值,通过自定义类对象并赋值的方式,将Node节点转换为节点类;
4)最终完成对XSD的解析,生成对应的XSD解析类。
2.一种XSD格式文件的生成方法,其特征在于:所述XSD格式文件的生成方法包括以下步骤:
1)初始化StreamReader类将XSD文件路径带入,将XSD文件转换为Stream流文件,其次初始化XmlDocument类对象,通过对象的Load方法将该文件流转换为对应的XmlDocument类;
2)调用XmlDocument类内部的DocumentElement方法,将XmlDocument类转换为对应的XmlElement文档类,通过内部的属性值ChildNodes,获取该文档的N个Node节点块,节点对象代表XmlElement文档树中一个单独的节点;
3)将拆分出来的Node节点块通过点LocalName的属性获取对应的节点的名称,再通过Attributes方法获取该节点的属性集合;具体实现方式是:利用C#的反射机制,提取element属性值,获取的每个节点块对应的属性值以及类型值,通过自定义类对象并赋值的方式,将Node节点转换为节点类;
4)最终完成对XSD的解析,生成对应的XSD解析类;
5)将XSD解析类的对应属性以及属性值赋值给新定义的XmlAttribute类对象,初始化时给与对应的类名称和值;具体实现方式是:通过该方式将XSD类转换为多个节点类型类,此方式利用的C#的反射填充element属性值机制,形成的节点类型类必须与XSD类属性名以及值完全一致;
6)将节点类型类的属性名以及属性值衣服赋值给新定义的XmlElement类对象,通过初始化带入方式赋值,节点类型类与节点类型XmlElement的属性名称以及属性值必须保持完全一致;
7)定义一个新的XmlDocument类对象,将上述节点类型XmlElement通过Add的方法加入到XmlDocument的Root根节点属性下,从而完成对XmlDocument文档信息类的组装;
8)创建一个MemoryStream文件流对象,利用XmlDocument文档信息类的Save方法将XmlDocument文档进行保存操作。
3.一种用于实现XSD格式文件的解析方法或XSD格式文件的生成方法的操作系统,其特征在于:所述操作系统包括:
读取模块:在XSD格式文件进行解析过程中,通过StreamReader类将选定的XSD文件进行读取操作,将其转换为Stream文件流形式;在XSD格式文件进行生成过程中,将XmlDocument文档信息转换为XSD文档信息,为展示XSD文件生成的成果展示;
解析模块:在XSD格式文件进行解析过程中,将读取模块的XSD文件流进行解析,从而将XSD文件流转换为XmlDocument文档信息类型,在XSD格式文件进行生成过程中,将XmlDocument文档转换为XSD文件信息;
节点类型模块:在XSD格式文件进行解析过程中,将XmlDocument文档信息转化为节点类型,即用特定的字符串代表特定的节点,包含节点的类型以及值,在XSD格式文件进行生成过程中,将节点类型类转换为对应的节点类型,必须与节点类型类一一对应,完全匹配;
节点类模块:在XSD格式文件进行解析过程中,将节点类型转化为一一对应的节点类或者对象;节点类必须与节点类型相对应;在XSD格式文件进行生成过程中,将XSD类通过反射提取机制,转换为节点类;
XSD类模块:在XSD格式文件进行解析过程中,将节点类组合生成对应的XSD类,实则为C#对象;展示对XSD文件的解析成果;在XSD格式文件进行生成过程中,将XSD类通过反射填充机制转换为节点类,开始进一步的生成XSD文件操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010033769.9A CN111259634B (zh) | 2020-01-13 | 2020-01-13 | Xsd格式文件的解析方法及生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010033769.9A CN111259634B (zh) | 2020-01-13 | 2020-01-13 | Xsd格式文件的解析方法及生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111259634A CN111259634A (zh) | 2020-06-09 |
CN111259634B true CN111259634B (zh) | 2023-06-09 |
Family
ID=70945261
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010033769.9A Active CN111259634B (zh) | 2020-01-13 | 2020-01-13 | Xsd格式文件的解析方法及生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111259634B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112328841B (zh) * | 2020-11-30 | 2024-05-31 | 中国民航信息网络股份有限公司 | 一种文档处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671853B1 (en) * | 1999-07-15 | 2003-12-30 | International Business Machines Corporation | Method and system for selectively streaming markup language documents |
CN101256492A (zh) * | 2008-03-31 | 2008-09-03 | 宋乃辉 | 一种进行模型驱动架构的软件开发方法及其系统 |
CN108519964A (zh) * | 2018-03-09 | 2018-09-11 | 中国工程物理研究院计算机应用研究所 | 将XML Schema文档转换为Java代码的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8621342B2 (en) * | 2009-07-30 | 2013-12-31 | Oracle International Corporation | System and method for XML registry re-parsing |
-
2020
- 2020-01-13 CN CN202010033769.9A patent/CN111259634B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671853B1 (en) * | 1999-07-15 | 2003-12-30 | International Business Machines Corporation | Method and system for selectively streaming markup language documents |
CN101256492A (zh) * | 2008-03-31 | 2008-09-03 | 宋乃辉 | 一种进行模型驱动架构的软件开发方法及其系统 |
CN108519964A (zh) * | 2018-03-09 | 2018-09-11 | 中国工程物理研究院计算机应用研究所 | 将XML Schema文档转换为Java代码的方法 |
Non-Patent Citations (3)
Title |
---|
周娴,黄昶,方晓颖.基于XML解析技术的Visio图与应用程序间的数据交互.电脑学习.2005,(第06期),全文. * |
李斌 ; 孔祥艳 ; .基于DOM的XML解析技术在构件描述中的应用.无线电通信技术.2011,(第02期),全文. * |
王毅,刘云生,钟昊.XSD优化存储与解析.计算机工程.2006,(第19期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111259634A (zh) | 2020-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7032210B2 (en) | Method and system for generating program source code of a computer application from an information model | |
US7506324B2 (en) | Enhanced compiled representation of transformation formats | |
CN104881275B (zh) | 一种电子报表生成方法及装置 | |
US7941461B2 (en) | System and method for developing and enabling model-driven XML transformation framework for e-business | |
US8407585B2 (en) | Context-aware content conversion and interpretation-specific views | |
US7779398B2 (en) | Methods and systems for extracting information from computer code | |
US20040168124A1 (en) | System and method of mapping between software objects & structured language element-based documents | |
US7849439B2 (en) | Application-generic sequence diagram generator driven by a non-proprietary language | |
US7698694B2 (en) | Methods and systems for transforming an AND/OR command tree into a command data model | |
US7784036B2 (en) | Methods and systems for transforming a parse graph into an and/or command tree | |
US20080244541A1 (en) | Code translator and method of automatically translating modeling language code to hardware language code | |
US9552441B2 (en) | Database mapping of models for reporting tools in model driven development | |
US20040205573A1 (en) | Dynamic generation of schema information for data description languages | |
JPH11272667A (ja) | 構造化文書作成方法、構造化文書作成装置及び構造化文書作成用プログラムを格納した記憶媒体 | |
KR20040007545A (ko) | 소프트웨어 객체와 구조화 언어 요소 기반 문서간의 매핑시스템 및 방법 | |
US7231600B2 (en) | File translation | |
CN111309313A (zh) | 一种快速生成html以及存储表单数据的方法 | |
JP2007293838A (ja) | コンテンツ変換システム | |
US20070150494A1 (en) | Method for transformation of an extensible markup language vocabulary to a generic document structure format | |
CN108170409B (zh) | Web前端控件的开发方法和系统 | |
CN114625349A (zh) | 前端页面生成方法、装置、终端设备及存储介质 | |
CN108664546B (zh) | Xml数据结构转换方法和装置 | |
US20070028164A1 (en) | Computer readable storage medium and document processing method | |
CN111259634B (zh) | Xsd格式文件的解析方法及生成方法 | |
US20050177788A1 (en) | Text to XML transformer and method |
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 |