CN1896992A - 基于应用定制解析xml文档的方法及装置 - Google Patents

基于应用定制解析xml文档的方法及装置 Download PDF

Info

Publication number
CN1896992A
CN1896992A CNA2006100925633A CN200610092563A CN1896992A CN 1896992 A CN1896992 A CN 1896992A CN A2006100925633 A CNA2006100925633 A CN A2006100925633A CN 200610092563 A CN200610092563 A CN 200610092563A CN 1896992 A CN1896992 A CN 1896992A
Authority
CN
China
Prior art keywords
label
tag
node
value
instruction
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
CNA2006100925633A
Other languages
English (en)
Other versions
CN100458786C (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.)
UTStarcom Telecom Co Ltd
Original Assignee
UTStarcom Telecom Co Ltd
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 UTStarcom Telecom Co Ltd filed Critical UTStarcom Telecom Co Ltd
Priority to CNB2006100925633A priority Critical patent/CN100458786C/zh
Publication of CN1896992A publication Critical patent/CN1896992A/zh
Priority to PCT/IB2007/052306 priority patent/WO2007144853A2/en
Application granted granted Critical
Publication of CN100458786C publication Critical patent/CN100458786C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种新的XML解析器SpeedXMLParser及其解析实现方法,此解析器提供XML文档解析方法ParseInstruction中能通过参数instruction来进行XML文档的定制解析,解析器根据参数instruction生成UserInstruction树,然后根据UserInstruction树进行XML文档的定制解析过程,并建立SpeedXMLParser内存树结构(类似DOM)便于XML文档数据的处理如:随机访问XML文档数据;查、改、删XML文档数据等。此发明具有较大提高XML文档解析性能,从而改善计算机的数据处理性能的技术益处。

Description

基于应用定制解析XML文档的方法及装置
技术领域
本发明总的来说涉及文档数据处理领域,更具体地说,涉及一种新的不同于当前普遍使用的SAX(Simple API for XML)和DOM(Document Object Model)方式的XML文档解析实现方法及其解析装置,具有可基于定制的应用要求(例如用户定制的解析要求)进行解析并且提高XML文档解析性能的特点。
背景技术
XML(可扩展的标记语言)是一种结构化的文本标签语言,主要由标签、标签值、属性、属性值、特殊处理指令、注释等构成,由于其开放性,可扩展性,语法严格等优势,目前已经广泛用于各种数据存储和数据通信领域。
目前XML的数据解析有两种主流技术:SAX(Simple API forXML)和DOM(Document Object Model),两种技术实现原理不同,如图1所示:
SAX基于事件触发方式进行解析,输入XML文档100,经过SAX解析器101,解析器顺序的从XML文档中读数据,当发现特殊符号(如标签的开始,结束等)出现,则以事件的方式向应用层模块103进行通报,当应用层处理完成后返回SAX解析器继续后续的处理,直到文档结束或者应用层要求终止解析过程。
DOM则将XML文档100一次性的经过DOM解析器102解析成一个保存在内存中的对象树104,对象树的节点总是XML文档某一部分的映射,节点的层次性恰好反映了XML文档的结构,对XML的随机操作转化为对DOM树的操作。
两项技术的优缺点如下表1,可以看出,除了性能方面差一些外,DOM比SAX具有明显的优势,因而成为目前主流的XML解析器得到了大量应用。
  项目   SAX   DOM
  解析效率   相对较高   相对较低
  对内存的需求   低   高,需要在内存中构造DOM树
  应用层能否中断解析过程   可以   不可以
  与应用层的关系   与应用层之间存在一个紧耦合的回调关系   独立于应用层
  能否提供随机访问XML文档数据   只提供顺序访问方式   提供随机访问
  操作XML文档数据的能力   通常只提供查询接口   能提供查,改,删XML文档数据接口
                    表1:SAX和DOM技术的优缺点
发明内容
根据上述的背景技术分析,本发明目的在于提供一个可扩展的API接口,通过此接口既能提供类似DOM的强大XML数据处理能力(随机访问XML文档数据;能查、改、删XML文档数据),又能尽可能提高XML文档的解析速度和XML数据的查询速度,从而增强计算机的数据处理性能。
本发明的技术方案是:提供一个SpeedXMLParser接口给用户,在此接口中的XML解析过程ParseInstruction方法的接口参数中提供一个用户定制特性参数instruction,由此参数指明应用需要解析哪些标签及其属性的值,解析器只解析应用指定的XML文档部分而忽略XML文档的其他部分,图2描述了SpeedXMLParser与DOM的解析树的区别。
概括地说,根据本发明的第一方面,提供一种解析文档的方法,该方法按照定制的应用要求,对XML文档进行定制解析,该方法包括步骤:
按照定制的应用要求确定对所述XML文档进行解析的范围;
基于所确定的解析范围对所述XML文档进行解析,以便从所述XML文档获得与所述应用要求相匹配的信息。
根据本发明的第二方面,提供一种用于解析XML文档的文档解析装置,用于按照定制的应用要求,对XML文档进行定制解析,所述文档解析装置包括:
解析指令树生成单元,用于按照定制的应用要求产生解析XML文档所需的解析指令树;
文档解析单元,用于按照由所述解析指令树生成单元产生的所述指令树来解析XML文档,以从所述XML文档获得与所述应用的要求相匹配的信息。
本发明的解析方法和解析装置根据定制的应用要求对符合特定语法规则的文档进行解析,从而提高解析效率,改善计算机数据处理性能。
附图说明
通过结合构成本发明的一部分的附图对本发明的具体实施例的描述,本发明的目的、特征及其技术益处将会变得明显。在各附图中:
图1是示出现有技术中SAX和DOM技术实现的原理图;
图2是示出通过根据本发明的解析方法的解析器SpeedXMLParser构建的解析树与DOM构建的解析树的区别的图;
图3是示出根据本发明的解析方法的解析器SpeedXMLParser提供的应用程序接口的示意图;
图4是示出在根据本发明的解析方法中利用解析器SpeedXMLParser对XML文档进行解析的过程的示意图;
图5是示出在根据本发明的解析方法中对UserInstruction的定义以及UserInstruction树的结构的图;
图6是示出在根据本发明的解析方法中构建UserInstruction树的流程图;
图7和图8是示出根据本发明的解析方法利用解析器SpeedXMLParser对XML文档进行解析的详细流程图;
图9是示出根据本发明的解析方法利用解析器SpeedXMLParser解析示例XML文档所生成的内存树结构的图,其中参数instruction=″/物品列表/(书籍<a>),((电脑<a>)/(配置))″
图10是示出了用于实现本发明的解析方法的解析装置的示意结构框图。
具体实施方式
下面结合各附图对本发明的具体实施方式进行详细描述。
图2示出通过根据本发明的解析方法利用解析器SpeedXMLParser构建的解析树与DOM构建的解析树的区别。如图2所示,假设输入的XML文档有18种标签,则DOM将完全解析成DOM树结构200(当然同一种标签可能多个值,图中没有标出),但是实际上某一应用或者应用的某一模块只需要用到了0,4,6三种标签的数据,则利用实现本发明的解析方法的解析器SpeedXMLParser将输入的XML文档解析为树结构201。可以看到,本发明的方法在原DOM树结构200中的3,5,7标签下只解析成一个节点而没有继续深入解析为子树,从而大大减少了解析工作量,提高解析效率。
在很多以XML文档作为接口数据交换的实际应用系统中,应用系统的某一构件或者构件中的某一模块可能只关心输入XML数据流的一部分数据项而不是全部的XML数据项,采用DOM处理方式需要解析XML文档的所有标签和属性,包括本应用系统不需要用到的XML数据项,而使用实现本发明的解析方法的解析器SpeedXMLParser则可避免这部分对应用系统无用的性能损失。
为了能够说明清楚问题,先按照XML的规则构造如下一个XML文档,后面将围绕这个例子对本发明进行详细说明:
<?xml version=″1.0″encoding=″UTF-8″?>
<物品列表>
 <书籍尺寸=″16开″>
  <名称>自传书</名称>
  <价格单位=″人民币″>10.9</价格>
  <作者性别=″男″出生日期=″1949″>Jupiter</作者>
  <作者>Felicity</作者>
  <出版社><名称>商业出版社</名称><城市>深圳</城市></出版社>
 </书籍>
 <书籍>
  <名称>史记</名称>
  <作者性别=″男″>司马迁</作者>
 </书籍>
 <电脑质保期=″3年″>
  <型号厂商=″DELL″颜色=″黑″>D400</型号>
  <配置>
   <CPU>Pentium</CPU>
   <Memory容量=″256″/>
 </配置>
</电脑>
<照相机><厂商>柯达</厂商><型号>DX6490</型号></照相机>
</物品列表>
(1)应用接口描述
图3以UML(统一建模语言)方式描述了提供的应用程序接口,其中String类为字符串类,InputStringStream为字符串输入流,ElementList为Element的一个链表,是链表类的一个具体应用,同理,AttributeList为Attribute的一个链表,字符串类,链表类和字符串输入流在标准面向对象支持语言如C++/Java已经得到支持。
SpeedXMLParser为XML文档解析的入口,变量定义:
  类变量   描述
Root:Element*   用于保存解析XML文档的根节点信息,初始化为空值(NULL)
Mode:int   当需要解析子标签时,建立快速索表的种类(Element的类变量Value保存指向此表的指针),可能取值有:1)HASH_MODE:快速索引表的种类为哈希表,以内存换速度,达到更好的搜索效率;2)SORT_MODE:快速索引表的种类为字符串排序表(升序或降序)
SpeedXMLParser的方法定义:
 Bool ParseInstruction(InputStringStream &instream,Stringinstruction,int mode)(注意:InputStringStream表示接口类型)
 参数   描述
 instream   输入字符串数据流,包含待解析的XML文档数据
instruction   基于定制的应用要求的(例如用户定制的)XML解析指令,要求格式符合定义
 mode   同SpeedXMLParser类变量Mode的定义
 返回值   成功解析:true;解析失败:false;
描述   根据用户定制指令instruction解析包含XML文档数据的instream,返回值指明解析是否成功
 Element* GetRootElement()
 参数   描述
 无
 返回值   根节点的Element指针;
描述   本方法应在ParseInstruction成功完成XML文档数据解析后再使用,直接将类变量Root返回
 ElementList* GetElement(String tagname)
 参数   描述
tagname   标签名,可以包含多级,允许如下形式:″/根标签名/子标签名/下一级子标签名″,如:″/物品列表/书籍″
 返回值   指针指向标签名tagname对应的节点列表
描述   本方法应在ParseInstruction成功完成XML文档数据解析后才使用,它把tagname对应树节点中的ElementList* 指针(从快速索引表中搜索得到)返回,如果找不到则返回空值(NULL)
 Element* GetElement(String tagname,int index)
 参数   描述
 tagname   与前方法定义相同
index   用于指明取某种标签名下的第几个XML数据实例对应的节点
描述   搜索到对应标签名的指定的节点(顺序第index个)则返回相应的Element指针;否则返回NULL。
返回值   与上面GetElement()方法的区别是本方法能直接定位某种标签的顺序的第index个实例的节点。
Element用于保存SpeedXMLParser树的一个节点,可以是叶节点或者子树的根节点,它对应XML文档的一个标签,Element变量定义:
  类变量   描述
 Name:String   用于保存本节点的标签名
 IfParseAttr:bool   标志是否需要解析此标签的属性
Attribute:void*   用于保存本节点的属性,有两种可能:1)如果IfParseAttr=true,即需要解析标签属性,则Attribute为AttributeList*类型;2)如果IfParseAttr=false,即不需要解析标签属性,则Attribute为String*类型,指向的字符串为整个标签属性,如:容量=″256″
 IfParseValue:bool 标志是否需要解析此标签的子标签;
Value:void*   用于保留本标签的值,有两种可能:1)如果IfParseValue=true,即需要对子标签进行解析,则Value为指向一个快速索引表,索引表的类型可能是哈希表或者字符串排序表,由SpeedXMLParser的类变量Mode指明创建哪一种快速索引表,索引表的功能建立一个<tagElementList*>的二维对应关系,即能够通过标签名tag搜索其对应的ElementList*指针,此指针指向tag对应的XML数据的节点列表;2)如果IfParseValue=false,即不需要对子标签进行解析,则Value为String*类型,用于保存本标签的开始标签与结束标签之间的子字符串,即使此子字符串可能包含子标签也不进一步解析,如可能保存的子字符串为:″<厂商>柯达</厂商><型号>DX6490</型号>″
Element方法定义:
  AttributeList*GetAttributeList()
  参数 描述
  无
  返回值 返回指针指向本节点的属性列表指针
描述 如果IfParseAttr=true,返回指针指向成功解析得到的标签属性列表AttributList;如果IfParseValueAttr=false,返回空值(NULL);
  String*GetAttributeByName(String attrname)
  参数 描述
  attrname 标签属性名
  返回值 返回指针指向标签属性值的字符串指针;
描述 如果IfParseAttr=false,返回空值(NULL);如果IfParseAttr=true,本方法根据属性名返回指针指向name对应的属性值;
  String*GetAttributeString()
  参数
  无
  返回值 返回指针指向未经解析的标签属性的字符串数据
描述 如果IfParseValue=true,返回空值(NULL);如果IfParseValue=false,返回指针指向未经解析的标签属性的字符串数据;
  String*GetValueString()
  参数
  无
  返回值 返回指针指向未经解析的标签值的字符串数据
描述 如果IfParseValue=true,返回空值(NULL);如果IfParseValue=false,返回指针指向未经解析的标签值的字符串数据;
  ElementList*GetSonListByName(String tagname)
  参数
  tagname 子标签名
  返回值 返回指针指向本标签下某子标签名的节点列表
描述 如果IfParseValue=true,返回指针指向本标签下某子标签名的节点列表ElementList;如果IfParseValue=false,返回空值(NULL);
  Element*GetSonNodeByName(String tagname,int index)
  参数
  tagname 子标签名
  index 用于指明取某种标签名下的第几个节点
  返回值 返回指针指向本标签下某子标签名的第index个节点
描述 如果IfParseValue=true,返回本标签下某标签名的子标签列表中顺序第index个节点;如果IfParseValue=false,返回空值(NULL);
Attribute用于保存某个标签的一个属性值,Attribute变量定义:
  类变量   描述
  Name:String   用于保存本节点的标签属性名
  Value:String   用于保存本节点的标签属性值
使用以上接口,应用操作XML文档数据的伪代码如下:
//instream已经包含待解析的XML文档数据
SpeedXMLParser*parser=new SpeedXMLParser();
parser->ParseInstruction(instream,″/物品列表/(书籍<a>),((电脑<a>)/(配置))″,HASH_MODE);
//得到“书籍”列表的顺序第一个节点(名为“自传书”)
Element*pBook=parser->GetElement(″/物品列表/书籍″,0);
if(!pBook)
{
  //返回“自传书”的属性名为“尺寸”的值(″16开″)
  String*pAttrValue=pBook->GetAttributeByName(″尺寸″);
  //得到“作者”列表的顺序第二个节点(名为“Felicity”)
  Element*pAuthor=pBook->GetSonNodeByName(″作者″,1);
  if(!pAuthor)
    //返回此“作者”元素的第一个值“Felicity”
    String*pValue=pAuthor->GetValueString();
  //...
}
delete parser;
(2)SpeedXMLParser::ParseInstruction方法中用户定制解析参数instruction的定义
语法使用RFC2234的BackuS-Naur Form(BNF)定义如下:
instuction=″/″rootTag[″/″sonTagList]
sonTagList=sonTag [″,″sonTagList]
sonTag  =″(″tagString[″/″sonTagList]]″)″
rootTag  =tag
tagString=tag[″<a>″]
tag    =与W3C的XML规范对标签的定义一致,但是不包含′/′,’<’和’>’,’(’和’)’字符
rootTag为根标签,sonTag为子标签,子标签本身可以递归,<a>的含义是要求解析器解析此标签的属性值。
依照此语法,举例说明instruction的含义如下表:
  instruction   含义
″/物品列表″   要求解析器:只解析根标签“物品列表”的所有下一级子标签
″/物品列表/(书籍<a>)″   要求解析器:解析根标签“物品列表”的所有下一级子标签;以及子标签“书籍”的属性,和“书籍”所有下一级子标签
″/物品列表/(书籍<a>),(电脑)″   要求解析器:解析根标签“物品列表”的所有下一级子标签;以及解析子标签“书籍”的属性和“书籍”所有下一级子标签;以及解析子标签“电脑”的所有下一级子标签;
″/物品列表/(书籍<a>),((电脑<a>)/(配置))″   要求解析器:只解析根标签“物品列表”的所有下一级子标签;以及解析子标签“书籍”的属性和“书籍”所有下一级子标签;以及解析子标签“电脑”的属性和所有下一级子标签;以及解析标签“配置”的所有下一级子标签。
(3)SpeedXMLParser::ParseInstruction方法的XML文档总体解析过程
图4是示出在根据本发明的解析方法中利用SpeedXMLParser对XML文档进行解析的过程的示意图。如图4所示,该解析过程包括两大步骤:
步骤S400:解析接口instruction参数,构造UserInstruction树;
步骤S401:根据在步骤S400构造的UserInstruction树进行XML文档的定制解析过程,并建立SpeedXMLParse内存树结构;
(4)构造UserInstruction树
图5是示出在根据本发明的解析方法中对UserInstruction的定义以及UserInstruction树的结构的图。
方框500描述了UserInstruction的定义:
  类变量  描述
TagName:String  用于保存解析XML文档的标签信息,初始化为空值(NULL)
  IfNeedParseAttr:bool 标志是否需要解析此标签的属性
Son:UserInstructionList*  指针指向此标签需要解析的下级子标签列表,UserInstructionList是List的一个具体应用
方框501描述当参数instruction等于″/物品列表/(书籍<a>),((电脑<a>)/(配置))″时解析生成的UserInstruction树的结构。
下面参照图6描述UserInstruction树的构造过程。
如图6所示,从参数instruction中读起始子字符串(步骤S600),判断读出的子字符串的值(步骤S601):
如果子字符串值为空,或不是″/tag″格式,或不以″/tag/″为首的字符串,错误退出(步骤S602);
如果子字符串值为″/tag″格式,创建UserInstruction树根节点,并且设置根节点数据元素TagName的值为″tag″、IfNeedParseAttr的值为false、Son为NULL,结束UserInstruction树的构造正常退出(步骤S603);
如果子字符串值以″/tag/″为首的字符串,创建UserInstruction树根节点,并且设置根节点数据元素TagName的值为″tag″、IfNeedParseAttr的值为false、Son指向一个新创建的UserInstructionList,以instruction剩余的子字符串作为输入参数(步骤S604),逐级构造UserInstruction树其余各层子节点(步骤S605)。
步骤S605逐级构造UserInstruction树子节点的详细方法如下:
1)读输入参数字符串数据,忽略分隔符逗号(′,′),判断从字符串中读出的子字符串是否以′(′为首的字符串?
1.1)如果是′(′为首的字符串,扫描后续的字符,直到发现有匹配的′)′字符出现,则把此匹配的′(′′)′之间的字符串读出,没有匹配的′)′则出错退出处理,′(′′)′匹配的含义是:a)分割的子字符串中必须以′(′为首′)′为尾的字符串,′(′′)′之间的子字符串包含相同个数的′(′′)′;b)内部的每一对′(′′)′之间的子字符串也都匹配。
比如有如下输入字符串,则本次读出的匹配子字符串为:
  输入字符串   本次读出的匹配子串
  (tagString1/(tagString2),(tagString3)),(tagString4/(tagString5))   tagString1/(tagString2),(tagString3)
  (tagString4/(tagString5))   tagString4/(tagString5)
  (tagString5)   tagString5
进一步判断本次读出的匹配子串,如果子串中不包含字符′/′,进入1.2.1)步骤处理;如果子串中包含字符′/′,重新进入1)步骤处理;
1.2)如果不是′(′为首的字符串,判断是否符合″tagString″格式,或者以″tagString/″为首的字符串;
1.2.1)如果是″tagString″格式,则创建UserInstruction子节点,子节点变量TagName保存″tagString″的″tag″部分字符串,如果″tagString″包含″<a>″,则子节点变量IfNeedParseAttr置为true,子节点变量Son置为NULL,并且把此节点加入到上级节点Son指向的UserInstructionList列表中;
1.2.2)如果是″tagString/″格式,则创建UserInstruction子节点,子节点变量TagName保存″tagString″的″tag″部分字符串,如果″tagString″包含″<a>″,则子节点变量IfNeedParseAttr置为true,子节点变量son指向一个空的新创建的UserInstructionList链表,并且把此节点加入到上级节点Son指向的UserInstructionList列表中,然后顺序读参数instruction中后续的子字符串,并且忽略′(′之前的′,′重新进入1)步骤处理;
1.2.3)不是以上格式,错误退出;
(5)XML文档的解析过程
XML解析过程如图7,图8所示:
1)从参数输入字符串流instream中读出有效子字符串(步骤S700),“有效子字符串”的含义是需要解析器:
a)忽略特殊指令语句<?Statements?>
b)忽略注释语句<!--Statements-->
c)忽略特殊指令语句<%Statements%>
d)忽略语句<![CDATA[Statements]]>
e)读出的子字符串应该为以下几种:开始标签(包括属性),结束标签,标签值。注意空标签也属于以”<tag”为首的开始标签。例如,在前面的XML文档中,<Memory容量=″256″/>是一种空标签。
f)如果出现不符合XML的语法则出错退出。
g)如果到instream的末尾则出错退出。注意,如果是一个合法的XML文档,则文档的正常解析应该在解析器的流程控制中结束。如果解析器还需要从instream读取字符串,则说明解析器还没有读到整个XML的结束标签,但此时instream已经到输入流的结束,说明不是一个合法完整的XML文档,故出错退出。
2)判断读出的有效子字符串(步骤S701),如果不是开始标签,则出错退出(步骤S703);如果是开始标签,进一步判断UserInstruction树的根节点的数据成员TagName是否与读出的开始标签名一致(步骤S702),如果不一致,则出错退出(步骤S703);如果一致,成员Root指向一个新创建的根节点,设置根节点数据成员Name为开始标签名、IfParseAttr为false、Attribute为NULL。进一步判断此根开始标签是否为空标签(步骤S704)。
3)如果是空标签,相当于字符流以如下样式开始:″<rootTag″,,设置根节点的IfParseValue为false、Value为NULL,结束解析,正常退出(步骤S705)。
4)如果不是空标签,继续从instream参数中读有效子字符串(步骤S706);
5)判断读出的有效子字符串是什么(步骤S707):如果是标签值,相当于字符流以如下样式开始:″<rootTag>rootValue″,则直接使根节点的数据成员IfParseValue为false、Value指向此标签值字符串,继续继续从instream流中读有效子字符串,判断是否是根标签的结束标签,是则结束解析正常退出,忽略instream未处理的后续字符流;如果不是根标签的结束标签,则出错退出(步骤S708);
6)如果步骤S707读出的有效子字符串是结束标签,相当于字符流以如下样式开始:″<rootTag></rootTag>″,则判断是否是根节点的结束标签,是则设置根节点的数据成员IfParseValue为false、Value为NULL,结束解析,忽略instream未处理的后续字符流;不是根节点的结束标签则出错退出(步骤S709)。
7)如果步骤S707读出的有效子字符串是开始标签,相当于字符流以如下样式开始:″<rootTag><subTag>″,设置根节点的数据成员IfParseValue为true、Value指向一个新创建的快速索引表(快速索引表的类型由SpeedXMLParse的变量Mode指明,以下同),然后循环从参数instream的字符流中读有效子字符串生成其余各层子节点(步骤S710)。
图8示出生成各层子节点的具体处理过程的流程图,步骤S710后续处理为步骤S805,详细描述如下:
1)继续从参数instream字符流中顺序读有效子字符串(步骤S800);
2)步骤S801判断读出的子字符串是否是结束标签,是则进一步在步骤S802判断是否是为根标签的结束标签?是根标签的结束标签则结束解析正常退出(步骤S804),忽略instream未处理的后续字符流;不是根标签的结束标签则错误退出(步骤S803)。
3)如果步骤S801判断读出的子字符串不是结束标签;则判断读出的子字符串是否是开始标签(步骤S805),不是开始标签则错误结束(步骤S809),是开始标签则判断此标签在UserInstruction树的此层是否有此标签(步骤S806);
4)步骤S806判断此标签不在UserInstruction树的此层中,表明应用不要求进一步解析此标签的子标签,则步骤S807进一步判断是否读出子字符串为空标签,是则创建不解析属性和子标签的子节点,并把此节点加入到上级节点Value指向快速索引表此标签对应的ElementList列表中(所有创建新节点都需要此处理,以下同),设置此节点的Value为NULL,结束本节点的解析过程(步骤S810),退回到上一层节点的解析过程(步骤S800);如果步骤S807判断读出的子字符串不是空标签,则顺序扫描是否发现此开始标签的结束标签(步骤S808),如果没有发现此开始标签的结束标签,则错误退出(步骤S809);如果发现此开始标签的结束标签,则创建不解析属性和子标签的子节点,设置此节点的Value为开始标签与结束标签之间的字符串,如解析当前标签为″照相机″,当前待解析的字符串为″<照相机><厂商>柯达</厂商><型号>DX6490</型号></照相机>″,则此节点的Value指向″<厂商>柯达</厂商><型号>DX6490</型号>″的字符串值,然后结束本节点的解析过程(步骤S811),退回到上一层节点的解析过程(步骤S800);
5)步骤S806判断此标签在UserInstruction树的此层中,表明应用要求进一步解析此标签的子标签及属性,则取出匹配的UserInstruction对象,步骤S812判断是否读出子字符串为空标签,是空标签则创建子节点,并根据UserInstruction对象决定是否进一步解析标签属性,然后结束本节点的解析过程(步骤S813),退回到上一层节点的解析过程(步骤800);
6)如果步骤S812判断读出子字符串不为空标签,则创建子节点,并根据对应的UserInstruction对象决定是否进一步解析标签属性,然后继续从参数instream字符流中顺序读有效子字符串(步骤S814),步骤S815判断读出的有效子字符串的值;
7)如果步骤S815判断读出的有效子字符串的值为标签值,设置此节点的Value指向此标签值,继续从instream流中读有效子字符串,判断读有效子字符串是否是本子节点的结束标签,是本子节点的结束标签则结束本节点的解析过程,退回到上一层节点的解析过程(步骤S800);不是,出错退出(步骤S816);
8)如果步骤S815判断读出的有效子字符串的值为结束标签,相当于标签值为NULL,则判断是否是本子节点的结束标签,是结束标签则结束本节点的解析过程,并设置此节点的Value为NULL,退回到上一层节点的解析过程;不是,出错退出(步骤S817);
9)如果步骤S815判断读出的有效子字符串的值为开始标签,表明进入一个子标签的解析过程,则设置本子节点Value指向一个新创建的空的快速索引表,并进行本节点的下一级子节点的解析过程(步骤S818,S806)。
虽然本发明上述文档解析方法优选地通过软件来实现,但是本领域技术人员了解,这种方法同样也可以通过硬件来实现。例如,本发明还提供一种用于实现上述XML文档解析方法的解析装置。图10示出了本发明这种解析装置的示意结构框图。如图10所示,解析装置900包括解析指令生成单元901和文档解析单元902。定制的文档解析要求输入解析指令树生成单元901,该解析指令树生成单元901执行如上结合附图6描述的指令树生成方法,生成定制解析指令树,并将其输出到文档解析单元902。待解析的文档903也输入到文档解析单元902,该文档解析单元902依据定制解析指令,执行如上结合附图7-8描述的内存树生成方法,完成对输入的文档903的定制解析。
此外,虽然上述具体实施例是以XML文档为例进行说明的,但是,本领域技术人员了解,只要是按照一定语法规则构建的文档,都可以利用本发明的方法和装置进行定制解析。
上述具体实施例的描述并不意在对本发明进行限制,本发明的保护范围应该根据附后的权利要求进行解释,以期包含所有具体实施例的修改、变型及其等同结构等。

Claims (11)

1、一种解析文档的方法,该方法按照定制的应用要求,对XML文档进行定制解析,该方法包括步骤:
按照定制的应用要求确定对所述XML文档进行解析的范围;
基于所确定的解析范围对所述XML文档进行解析,以便从所述XML文档获得与所述应用要求相匹配的信息。
2、如权利要求1所述的解析文档的方法,其中所述定制的应用要求是定制的解析指令,以及其中,所述的按照定制的应用要求确定对所述XML文档进行解析的范围的步骤包括通过对所述定制的解析指令进行解析,创建包含有关需要从所述XML文档获得的内容的项目的信息的指令树的步骤。
3、如权利要求2所述的解析文档的方法,其中所述指令树包括表示需要从所述XML文档获得的相应标签的、代表所述指令树的相应节点的标签名称的节点名称数据元素TagName、表示是否需要解析相应节点的属性的节点属性解析参数IfNeedParseAttr、表示是否需要解析相应节点的下一级子节点的下级节点解析参数Son,以及其中,所述的创建指令树的步骤包括:
从定制解析指令中读起始子字符串,判断读出的子字符串的值是否为空、″/tag″格式和以″/tag/″为首的字符串中的任意一种(S601),并基于判断结果执行以下的操作
如果子字符串值为空,或不是″/tag″格式(S602),或不以″/tag/″为首的字符串,则错误退出定制的解析指令的解析过程;
如果子字符串值为″/tag″格式,创建指令树根节点,设置根节点名称数据元素TagName的值为″tag″(S603),节点属性解析参数IfNeedParseAttr的值为false,表示不需要解析根节点的属性,下级节点解析参数Son为NULL,表示不需要解析下一级子节点,结束指令树的构造正常退出;
如果子字符串值是以″/tag/″为首的字符串(S604),创建指令树根节点,设置根节点名称数据元素TagName的值为″tag″、节点属性解析参数IfNeedParseAttr的值为false、下级节点解析参数Son指向一个新创建的指令列表,所述指令列表包括与根节点下的子节点对应的子节点名称数据元素TagName、表示是否需要解析相应子节点的属性的子节点属性解析参数IfNeedParseAttr、表示是否需要解析相应子节点的下一级子节点的下级节点解析参数Son,以所述定制的指令的剩余子字符串作为输入参数,逐级构造所述指令树的其余各层子节点。
4、如权利要求3所述的解析文档的方法,其中,所述逐级构造所述指令树的其余各层子节点的步骤包括:
从所述定制的指令的剩余子字符串抽取需要解析的、所述XML文档的子标签的信息;
对于每个需要解析的子标签,执行以下操作
根据所述定制的指令判断是否需要解析该子标签的属性以及是否需要解析其下一级子标签,如果需要解析其属性,将与该子标签对应的指令树的子节点的节点属性解析参数IfNeedParseAttr的值设置为true;如果需要解析其下一级子标签,则使该子标签对应的指令树的子节点的下级节点解析参数Son指向与该需要解析的下一级子标签对应的空的新的指令列表,并将该子节点加入到上一级节点对应的指令列表中;如果不需要解析其下一级子标签,则将该子标签对应的指令树的子节点的下级节点解析参数Son设置为NULL,并将该子节点加入到上一级节点对应的指令列表中。
5、如权利要求1-4中任一项所述的解析文档的方法,其中所述的基于所确定的解析范围对XML文档进行解析的步骤生成包含与所述定制指令相匹配的信息的内存树,所述内存树包括表示内存树的相应节点的名称的标签名称参数Name、表示是否需要解析XML文档中相应标签的属性的标签属性解析参数IfParseAttr、表示相应标签的属性的标签属性参数Attribute、表示是否需要解析相应标签的子标签的子标签解析参数IfParseValue、表示本标签的值的标签值参数Value,所述文档解析步骤包括子步骤:
从所述XML文档的字符串流中读出有效子字符串(S700);
判断读出的有效子字符串是否为开始标签(S701)
如果不是开始标签,则出错退出文档解析过程(S703);
如果是开始标签,则进一步判断所述指令树的根节点对应的根节点名称参数TagName是否与读出的开始标签名一致,如果不一致,则出错退出(S703);如果一致,则创建内存树的根节点,设置根节点对应的标签名称参数Name为开始标签名、标签属性解析参数IfParseAttr为false、标签属性参数Attribute为NULL;
进一步判断此根开始标签是否为空标签(S704)
如果是空标签(S705),设置根节点的子标签解析
IfParseValue为false、标签值Value为NULL,结束文档解析过程,正常退出,
如果不是空标签,则继续从XML文档中读有效子字符串,并执行如下步骤:
如果读出的有效子字符串是标签值(S708),则直接使根节点的对应子标签解析参数IfParseValue为false、标签值参数Value指向此标签值字符串,继续从XML文档中读有效子字符串,判断是否是根标签的结束标签,是则结束文档解析正常退出,忽略未处理的后续字符流;如果不是根标签的结束标签,则出错退出文档解析过程;
如果读出的有效子字符串是结束标签(S709),则判断是否是根节点的结束标签,是则设置根节点的对应子标签解析参数IfParseValue为false、标签值参数Value为NULL,结束文档解析,忽略未处理的后续字符流;如果不是根节点的结束标签则出错退出文档解析过程;
如果读出的有效子字符串是开始标签(S710),则设置根节点的对应子标签解析参数IfParseValue为true、标签值参数Value指向一个新创建的快速索引表,该快速索引表包括该根标签的所有下一级子标签的标签索引参数,然后循环从XML的字符流中读有效子字符串以生成内存树其余各层子节点。
6、如权利要求5所述的解析文档的方法,其中所述的生成内存树其余各层子节点的步骤包括:
继续从XML文档字符流中顺序读有效子字符串;
判断读出的子字符串是否为结束标签(S801)
如果是结束标签则进一步判断是否是为根标签的结束标签(S802),如果是根标签的结束标签则结束文档解析正常退出(S804),忽略未处理的后续字符流;如果不是根标签的结束标签则错误退出文档解析(S803);
如果不是结束标签,则判断读出的子字符串是否是开始标签(S805),如果不是开始标签则错误结束文档解析过程(S809),如果是开始标签则判断在指令树的此层是否有此标签(S806)并根据判断结果执行以下操作
如果判断此标签不在指令树的此层中,则进一步判断是否读出子字符串为空标签(S807),如果是则创建不解析属性和子标签的子节点(S810),并把此节点加入到上一级节点对应的标签值参数Value指向的快速索引表内此标签所对应的元素列表ElementList中,设置此节点的对应标签值参数Value为NULL,结束本节点的解析过程,并退回到上一层节点的解析过程(S800);如果判断读出子字符串不是空标签(S807),则顺序扫描是否发现此开始标签的结束标签(S808),如果没有发现此开始标签的结束标签,则错误退出文档解析过程(S809);如果发现此开始标签的结束标签,则创建不解析属性和子标签的的子节点(S811),设置此节点的对应标签值参数Value为开始标签与结束标签之间的字符串,然后结束本节点的解析过程,退回到上一层节点的解析过程(S800);
如果判断此标签在指令树的此层中(S806),则取出指令树中与该标签对应的节点属性解析参数IfNeedParseAttr并进行以下操作:判断是否读出子字符串为空标签(S812),是空标签则创建子节点(S813),并根据所述节点属性解析参数IfNeedParseAttr的值决定是否进一步解析标签属性,然后结束本节点的解析过程,退回到上一层节点的解析过程(S800);如果判断读出子字符串不为空标签(S812),创建子节点(S814),并根据所述节点属性解析参数IfNeedParseAttr的值决定是否进一步解析标签属性,然后继续从XML字符流中顺序读有效子字符串,判断读出的有效子字符串的值(S815)并依据判断结果进行以下操作:
如果判断读出的有效子字符串的值为标签值(S815),设置此节点对应的标签值参数Value指向此标签值(S816),继续从XML文档数据流中读有效子字符串,判断读有效子字符串是否是本子节点的结束标签,是本子节点的结束标签则结束本节点的解析过程,退回到上一层节点的解析过程(S800);不是,则出错退出文档解析过程;
如果判断读出的有效子字符串的值为结束标签(S815),则判断是否是本子节点的结束标签(817),如果是本子节点的结束标签则结束本节点的解析过程,并设置此节点的标签值参数Value为NULL,退回到上一层节点的解析过程;如果不是,则出错退出文档解析;
如果判断读出的有效子字符串的值为开始标签(S815),则设置本子节点对应的标签值参数Value指向一个新创建的空的快速索引表(S818),进行本节点的下一级子节点的解析过程(S806),其中该快速索引表包括该子标签的所有下一级子标签的标签索引参数。
7、如权利要求5所述的解析文档的方法,其中所述有效子字符串的含义是需要解析过程
a)忽略特殊指令语句<?Statements?>;
b)忽略注释语句<!--Statements-->;
c)忽略特殊指令语句<%Statements%>;
d)忽略语句<![CDATA[Statements]]>;
e)读出的子字符串为开始标签、结束标签、标签值中的任何一种;
f)如果出现不符合XML的语法则出错退出;
g)如果到XML文档的末尾则出错退出。
8、如权利要求5所述的解析文档的方法,其中所述快速索引表包括哈希表方式的索引表或按字符串升序或降序排序的索引表。
9、一种用于解析XML文档的文档解析装置,用于按照定制的应用要求,对XML文档进行定制解析,所述文档解析装置包括:
解析指令树生成单元,用于按照定制的应用要求产生解析XML文档所需的解析指令树;
文档解析单元,用于按照由所述解析指令树生成单元产生的所述指令树来解析XML文档,以从所述XML文档获得与所述应用的要求相匹配的信息。
10、如权利要求9所述的文档解析装置,其中所述定制的应用要求是定制的解析指令,所述解析指令生成单元被配置成用于执行如权利要求2-4中任一项所述的指令树生成过程。
11、如权利要求9或10所述的文档解析装置,其中所述文档解析单元被配置成用于执行如权利要求5-6中任一项所述的内存树生成过程。
CNB2006100925633A 2006-06-15 2006-06-15 基于应用定制解析xml文档的方法及装置 Expired - Fee Related CN100458786C (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CNB2006100925633A CN100458786C (zh) 2006-06-15 2006-06-15 基于应用定制解析xml文档的方法及装置
PCT/IB2007/052306 WO2007144853A2 (en) 2006-06-15 2007-06-15 Method and apparatus for performing customized paring on a xml document based on application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100925633A CN100458786C (zh) 2006-06-15 2006-06-15 基于应用定制解析xml文档的方法及装置

Publications (2)

Publication Number Publication Date
CN1896992A true CN1896992A (zh) 2007-01-17
CN100458786C CN100458786C (zh) 2009-02-04

Family

ID=37609520

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100925633A Expired - Fee Related CN100458786C (zh) 2006-06-15 2006-06-15 基于应用定制解析xml文档的方法及装置

Country Status (2)

Country Link
CN (1) CN100458786C (zh)
WO (1) WO2007144853A2 (zh)

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739462A (zh) * 2009-12-31 2010-06-16 中兴通讯股份有限公司 可扩展标记语言编码方法、解码方法和客户端
CN101650733B (zh) * 2009-07-31 2012-10-31 金蝶软件(中国)有限公司 一种单点登录系统及其个性化数据引入方法和装置
US8375398B2 (en) 2008-08-14 2013-02-12 Ambit Microsystems (Shanghai) Ltd. Method and system for sharing configuration parameters among processes of an electronic device
CN103049536A (zh) * 2012-11-01 2013-04-17 广州汇讯营销咨询有限公司 提取网页正文内容的方法和系统
CN104424334A (zh) * 2013-09-11 2015-03-18 方正信息产业控股有限公司 Xml文档节点的构建方法和装置
CN104753891A (zh) * 2013-12-31 2015-07-01 中国移动通信集团湖南有限公司 一种xml报文解析方法及装置
CN105868257A (zh) * 2015-12-28 2016-08-17 乐视网信息技术(北京)股份有限公司 Xml数据解析方法、生成方法以及处理系统
CN106372042A (zh) * 2016-08-31 2017-02-01 北京奇艺世纪科技有限公司 一种文档内容获取方法和装置
CN106407679A (zh) * 2016-09-13 2017-02-15 上海市徐汇区中心医院 移动互联跨平台跨设备远程诊疗系统
CN108076010A (zh) * 2016-11-10 2018-05-25 中国移动通信集团广东有限公司 一种xml报文解析方法及服务器
CN108140026A (zh) * 2015-05-20 2018-06-08 电子湾有限公司 搜索中的多面实体识别
CN108399084A (zh) * 2017-02-08 2018-08-14 中科创达软件股份有限公司 一种应用程序的运行方法及系统
CN108427676A (zh) * 2017-02-13 2018-08-21 北京新云胜科技有限公司 一种xml标签快速定位和处理的方法
CN110765163A (zh) * 2019-10-17 2020-02-07 华普通用技术研究(广州)有限公司 一种大数据处理流程的执行计划生成方法
CN112148298A (zh) * 2020-09-11 2020-12-29 杭州安恒信息技术股份有限公司 Html数据解析方法、装置、计算机设备和存储介质
CN112182310A (zh) * 2020-11-04 2021-01-05 上海德拓信息技术股份有限公司 一种内置实时搜索的通用树形组件实现方法
CN113347196A (zh) * 2021-06-21 2021-09-03 浙江理工大学 一种对网络数据进行解析的解析方法、装置、电子设备以及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110795915B (zh) * 2018-07-31 2024-07-16 南京中兴新软件有限责任公司 xml文件批量修改方法、系统、设备和计算机可读存储介质
CN111881696B (zh) * 2020-07-31 2024-02-23 兰州大学 一种cml到化学盲文的转换系统及方法
CN113591454A (zh) * 2021-07-30 2021-11-02 中国银行股份有限公司 一种文本解析方法及装置
CN117275651A (zh) * 2023-09-01 2023-12-22 北京华益精点生物技术有限公司 医疗报告生成方法、装置及电子设备
CN116976286B (zh) * 2023-09-22 2024-02-27 北京紫光芯能科技有限公司 用于进行文本布局的方法及装置、电子设备、存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6763499B1 (en) * 1999-07-26 2004-07-13 Microsoft Corporation Methods and apparatus for parsing extensible markup language (XML) data streams
US7191186B1 (en) * 2002-11-27 2007-03-13 Microsoft Corporation Method and computer-readable medium for importing and exporting hierarchically structured data
KR100564767B1 (ko) * 2003-12-26 2006-03-27 한국전자통신연구원 Xml처리 장치 및 이를 적용한 시스템의 xml 처리 방법
CN1667610A (zh) * 2005-03-24 2005-09-14 北京北方烽火科技有限公司 一种基于标记的xml快速解码方法

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8375398B2 (en) 2008-08-14 2013-02-12 Ambit Microsystems (Shanghai) Ltd. Method and system for sharing configuration parameters among processes of an electronic device
CN101650733B (zh) * 2009-07-31 2012-10-31 金蝶软件(中国)有限公司 一种单点登录系统及其个性化数据引入方法和装置
CN101739462A (zh) * 2009-12-31 2010-06-16 中兴通讯股份有限公司 可扩展标记语言编码方法、解码方法和客户端
CN101739462B (zh) * 2009-12-31 2012-11-28 中兴通讯股份有限公司 可扩展标记语言编码方法、解码方法和客户端
CN103049536A (zh) * 2012-11-01 2013-04-17 广州汇讯营销咨询有限公司 提取网页正文内容的方法和系统
CN104424334A (zh) * 2013-09-11 2015-03-18 方正信息产业控股有限公司 Xml文档节点的构建方法和装置
CN104753891A (zh) * 2013-12-31 2015-07-01 中国移动通信集团湖南有限公司 一种xml报文解析方法及装置
CN104753891B (zh) * 2013-12-31 2019-04-05 中国移动通信集团湖南有限公司 一种xml报文解析方法及装置
CN108140026B (zh) * 2015-05-20 2022-11-18 电子湾有限公司 搜索中的多面实体识别
CN108140026A (zh) * 2015-05-20 2018-06-08 电子湾有限公司 搜索中的多面实体识别
CN105868257A (zh) * 2015-12-28 2016-08-17 乐视网信息技术(北京)股份有限公司 Xml数据解析方法、生成方法以及处理系统
CN106372042A (zh) * 2016-08-31 2017-02-01 北京奇艺世纪科技有限公司 一种文档内容获取方法和装置
CN106372042B (zh) * 2016-08-31 2019-09-24 北京奇艺世纪科技有限公司 一种文档内容获取方法和装置
CN106407679A (zh) * 2016-09-13 2017-02-15 上海市徐汇区中心医院 移动互联跨平台跨设备远程诊疗系统
CN106407679B (zh) * 2016-09-13 2019-03-26 上海市徐汇区中心医院 移动互联跨平台跨设备远程诊疗系统
CN108076010B (zh) * 2016-11-10 2020-09-08 中国移动通信集团广东有限公司 一种xml报文解析方法及服务器
CN108076010A (zh) * 2016-11-10 2018-05-25 中国移动通信集团广东有限公司 一种xml报文解析方法及服务器
CN108399084A (zh) * 2017-02-08 2018-08-14 中科创达软件股份有限公司 一种应用程序的运行方法及系统
CN108399084B (zh) * 2017-02-08 2021-02-12 中科创达软件股份有限公司 一种应用程序的运行方法及系统
CN108427676A (zh) * 2017-02-13 2018-08-21 北京新云胜科技有限公司 一种xml标签快速定位和处理的方法
CN110765163A (zh) * 2019-10-17 2020-02-07 华普通用技术研究(广州)有限公司 一种大数据处理流程的执行计划生成方法
CN112148298A (zh) * 2020-09-11 2020-12-29 杭州安恒信息技术股份有限公司 Html数据解析方法、装置、计算机设备和存储介质
CN112182310A (zh) * 2020-11-04 2021-01-05 上海德拓信息技术股份有限公司 一种内置实时搜索的通用树形组件实现方法
CN112182310B (zh) * 2020-11-04 2023-11-17 上海德拓信息技术股份有限公司 一种内置实时搜索的通用树形组件实现方法
CN113347196A (zh) * 2021-06-21 2021-09-03 浙江理工大学 一种对网络数据进行解析的解析方法、装置、电子设备以及存储介质

Also Published As

Publication number Publication date
CN100458786C (zh) 2009-02-04
WO2007144853A2 (en) 2007-12-21
WO2007144853A3 (en) 2008-03-06

Similar Documents

Publication Publication Date Title
CN1896992A (zh) 基于应用定制解析xml文档的方法及装置
CN100339855C (zh) 内容管理系统
CN1906609A (zh) 在数据中心中使用的用于进行数据格式转换的系统
CN101055578A (zh) 基于规则的文档内容挖掘器
CN1781105A (zh) 在xml文档和关系数据之间的映射中保留层次信息
CN1784680A (zh) 搜索条件的逐渐放宽
CN101075320A (zh) 信息发布、查询系统和方法
CN1811765A (zh) 文字处理应用程序中的数据绑定
CN1622086A (zh) 在计算机网络中搜索
CN1627259A (zh) 软件应用程序中名空间或模式库支持的可编程对象模型
CN1841362A (zh) 用于处理电子表格的方法和系统
CN1615480A (zh) 网络设备间配置文件的翻译
CN1653448A (zh) 搜索数据源的系统和方法
CN1530860A (zh) 使用全局唯一标识符的数据搜索系统和数据搜索方法
CN101051323A (zh) 一种字符输入的方法、输入法系统及词库更新的方法
CN1685341A (zh) 跨语言搜索结果的闪烁注释标注加亮
CN1848774A (zh) 一种远程调用通信组件的系统及方法
CN1855040A (zh) 带有可重用得分和建议的可重据用数的资源创作
CN101030229A (zh) 变换使用源语义版本编码并被发送的文档的语义的方法
CN101065746A (zh) 文件自动丰富的方法和系统
CN1493043A (zh) 翻译信息段
CN1275161C (zh) 使用网络的文本文件阅览系统
CN1808377A (zh) 由非专属语言驱动的通用序列图生成器
CN1794230A (zh) 以透明方式公开计算机生成文档中嵌套数据的方法和系统
CN101055588A (zh) 获取限制词信息的方法、优化输出的方法和输入法系统

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090204

Termination date: 20150615

EXPY Termination of patent right or utility model