CN100527121C - 用于导入和导出分层结构化数据的方法 - Google Patents

用于导入和导出分层结构化数据的方法 Download PDF

Info

Publication number
CN100527121C
CN100527121C CNB200310120703XA CN200310120703A CN100527121C CN 100527121 C CN100527121 C CN 100527121C CN B200310120703X A CNB200310120703X A CN B200310120703XA CN 200310120703 A CN200310120703 A CN 200310120703A CN 100527121 C CN100527121 C CN 100527121C
Authority
CN
China
Prior art keywords
data
api
electronic document
content
importing
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.)
Expired - Fee Related
Application number
CNB200310120703XA
Other languages
English (en)
Other versions
CN1504925A (zh
Inventor
W·D·珀伦
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.)
Si Wei Yun
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN1504925A publication Critical patent/CN1504925A/zh
Application granted granted Critical
Publication of CN100527121C publication Critical patent/CN100527121C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • G06F16/986Document structures and storage, e.g. HTML extensions
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (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)
  • Communication Control (AREA)
  • Radar Systems Or Details Thereof (AREA)
  • Collating Specific Patterns (AREA)
  • Devices For Executing Special Programs (AREA)
  • Credit Cards Or The Like (AREA)
  • Photoreceptors In Electrophotography (AREA)
  • Television Systems (AREA)

Abstract

提供一种方法和计算机可读介质,用于在电子文档中有选择地导入和导出数据。可实现一种导入应用程序接口(API),用于从诸如XML文件这样的分层结构化文档导入内容。所述导入API结合解析程序运行,用以扫描文档和从选定的元素、节点、属性和文本中提取内容。所述导入API还可利用回调组件处理所提取内容。可实现一种导出应用程序接口用以导出数据建立分层结构化文档,如XML文件。所述导出API结合编写器运行,用以接收数据并导出作为分层结构化文档中的元素、节点、属性和文本的数据。

Description

用于导入和导出分层结构化数据的方法
技术领域
本发明涉及用于导入和导出分层结构化数据的方法和计算机可读介质。
背景技术
计算机软件应用允许用户生成包含组织成诸如电子数据表、日历、银行结单、产品清单、大纲等分层结构的数据的文档与如因特网之类的计算机网络上的其它用户交换。例如,用户可使用可扩展标记语言(XML)程序生成文档,以在使用不同格式的计算机系统之间交换分层数据。XML文档具有用户可定义的与包含在其中的数据邻接的描述性标记,使数据可被多种多样的计算机理解。可从文档导入数据并通过简单地解析具有描述的标记让用户观看。观看数据后,用户可导出数据至新的或编辑的分层格式化文档以发送给其它用户。
然而,解析文档是一个缓慢而复杂的需要多个步骤的过程。一些现有的解析程序如XML简单应用编程接口(SAX),都是基于事件的解析程序,在这些解析程序中一次一个地顺序读出XML标记。然而,要求用户记住状态并搜索整个文档以找到所要的XML标记。其它解析程序,如文档对象模型(DOM),是基于树的解析程序,它将整个XML文件载入存储器并允许随机访问,因此使它比基于事件的解析程序更容易找到所要的XML标记。不过基于树的解析程序需要遍历“树”以找到所要的XML标记。而且,这样的解析程序需要相当多的时间和存储器,这使得它们在分析大型XML文件时不实用。
因此,目前没有简易的方法从分层结构化文档导入数据。也就是说,没有简易的方法能可有选择地搜索文档查找指定标签或包含用户感兴趣的数据的部分,而无需不得不用诸如SAX这样基于事件分析的程序搜索整个文档,或者不得不用诸如DOM这样基于树的解析程序遍历树而同时耗费相当多的时间和存储器资源。
同样,虽然诸如DOM这样基于树的解析程序(将整个文件存储在存储器中)能够导出子树或其它分层数据,但是这样的解析程序受限其固有的相当多的时间和存储器资源的使用。
因此,在本领域内需要一种在分层结构化文档中可有选择地导入和导出内容的方法和系统。正是相对于这些和其它考虑,产生了本发明。
发明内容
本发明提供了用于在电子文档中有选择地导入和导出数据的方法和系统。在一个实施例中,提供了一种从电子文档有选择地导入内容的方法。接收一个具有以分层文件结构安排的数据的电子文档。分层文件结构可以是XML。电子文档中的数据包括与其关联的内容。数据可以包括XML元素、属性、节点和文本。指定要导入文档的指定数据,并针对指定数据执行一个动作以导入其所关联的内容。动作可包括针对这个指定数据解析文档并提取与其关联的内容项。
在本发明的另一个实施例中,提供了从计算机系统的一个源导出数据以建立电子文档的方法。导出从计算机系统的一个源接收的指定数据,生成电子文档。所建立的电子文档可以具有分层文件结构诸如XML。所建立的文档可包括XML元素、属性和节点。源可以是计算机系统中的一个客户机或服务器。可以将数据导出到数据流、存储器缓冲区或文件。
本发明的实施例还提供用于在电子文档中有选择地导入和导出数据的计算机可读介质。有关本发明不同方面的其它细节将因下面本发明的详细说明而变得显而易见。
附图说明
图1是为本发明提供一例示性运行环境的计算机及其关联的外部设备和网络设备的方框图。
图2是方框图,示出依照本发明实施例导入电子文档的例示性体系结构。
图3是方框图,示出依照本发明实施例导出数据建立电子文档的例示性体系结构。
图4是流程图,示出依照本发明实施例导入电子文档的例示性例程所执行的步骤。
图5是流程图,示出依照本发明实施例导出数据建立电子文档的例示性例程所执行的步骤。
具体实施方式
参考上述附图进行下面本发明的一个实施例的说明。本发明集中于用于导入和导出电子文档中的分层结构化数据的方法和系统。
操作环境
图1和下列讨论旨在提供对适当计算环境的简短、概括的说明,可在这个计算环境中实现本发明。虽然将在与个人计算机结合的操作系统上运行的应用程序接口的一般背景中描述本发明,但是本领域的熟练技术人员将认识到还可以结合其它程序模块一起实现本发明。一般地,程序模块包括完成特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域的熟练技术人员将懂得本发明可以实现于其它计算机系统配置,包括手提设备、多处理器系统、基于微处理器或可编程消费电子产品、蜂窝电话、小型机、大型计算机等等设备。本发明还可以实现于分布式计算环境,在其中可通过由通信网络连接的远程处理设备完成任务。在分布式计算环境中,程序模块可以位于本地和远程两者的存储器存储设备上。
参考图1,实现本发明的典型系统包括常规个人计算机20,它包括处理器单元21、系统存储器22和将系统存储器连接至处理器单元21的系统总线23。系统存储器22包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本导入/导出系统26存储在ROM 24中,包含帮助在个人计算机20内部件之间传送信息的基本例程,如在起动期间。个人计算机20还包括硬盘驱动器27、磁盘驱动器28,例如用于读写可移动磁盘29,和光盘驱动器75,例如用于读取CD-ROM光盘31或读写其它光学介质。硬盘驱动器27、磁盘驱动器28和光盘驱动器75分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34连接到系统总线23。驱动器及其相关的计算机可读介质为个人计算机20提供非易失的存储。尽管以上描述的计算机可读介质指的是硬盘、可移动磁盘和CD-ROM光盘,但本领域熟练技术人员应该懂得可被计算机读取的其它类型介质,如磁带、闪存卡、数字视盘、伯努利盒(Bernoulli cartridge)等等,也可以用于典型操作环境。
许多程序模块可存储在驱动器和RAM25中,包括操作系统35、一个或多个诸如字处理程序(或其它类型程序)这样的应用程序37、导入API 30、导出API 40和其它程序模块(未示出)。
用户可通过键盘76和如鼠标42这样的定点设备向个人计算机20输入命令和信息。其它输入设备(未示出)可包括话筒、游戏杆、游戏垫、卫星电视天线、扫描仪等等。这些和其它导入设备常常通过与系统总线连接的串行接口46连接至处理器单元21,但也可用其它接口连接,如游戏端口或通用串行总线(USB)。监视器47或其它类型显示设备也通过诸如视频适配器48这样的接口连接到系统总线23。除监视器之外,个人计算机一般包括其它外部输出设备(未示出),如喇叭或打印机。
个人计算机20可在网络化环境中运行,使用与一个或多个连接到诸如远程计算机49这样的远程计算机的逻辑连接。远程计算机49可以是服务器、路由器、对等设备或其它普通网络节点,且一般包括许多或所有相对于个人计算机20所述的部件,尽管在图1中只示出存储器存贮设备50。图1中所图示的逻辑连接包括局域网(LAN)51和广域网(WAN)52。这样的网络环境普遍存在于办公室、企业级计算机网络、企业内部互联网和国际互联网。
当在LAN网络环境中使用时,个人计算机20通过网络接口53连接到LAN51。当在WAN网络环境中使用时,个人计算机20一般包括调制解调器54或其它在诸如国际互联网这样的WAN 52上建立通信的工具。可以是内置或外置的调制解调器54通过串行接口46连接至系统总线23。在网络环境中,相对于个人计算机20所述的程序模块或其部分可存储在远程存储器存贮设备中。应理解所示网络连接是典型的且其它在计算机之间建立通信连接的方法也可利用。
操作
图2是一方框图,示出结合本发明的一个实施例所使用的例示性软件体系结构200。这个结构包括导入应用程序接口(API)30,用于从具有以分层文件结构安排的数据的电子文档中导入内容。在一个实施例中,电子文档是由与各个内容项关联的标记、属性和节点(子树)组成的XML文档。仅为了举例且不限制在此所述的本发明,以下是API 30可能处理的例示性XML文件:
<SOAP,ENV:Envelope xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/">
  <SOAP-ENV:Body>
    <CancelResponse xmlns="http://schemas.microsoft.com/billing">
      <Services>
        <Service Name="Some service"/>
        <!--More Services here-->
      </Services>
      <Subscriptions>
        <Subscription ID="Subscription ID">
          <BalanceImpacts>
            <BalanceImpact ImpactType="Type of impact">
              <Amount>Non-zero amount of impact</Amount>
            </BalanceImpact>
            <!--More Balance Impacts here-->
          </BalanceImpacts>
        </Subscription>
        <!--More Subscriptions here-->
      </Subscriptions>
      <Currency>Account Currency type</Currency>
      <Amount>Total balance impact</Amount>
    </CancelResponse>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
如图2所示,导入API 30从上述图1中的客户计算机20接收电子文档。在另一个实施例中,还可从服务器诸如远程计算机服务器49接收电子文档。导入API 30与解析程序60联系,用以针对定义电子文档分层结构的数据(即元素、属性、节点和文本)及其关联的内容解析电子文档。导入API 30管理解析程序60用以指定要从文档解析的特定数据。在一个实施例中,解析程序60可以是一个基于事件的解析程序,如华盛顿雷德蒙的微软公司的OFFICE XMLPARSER。解析程序60也可以是基于树的解析程序,如文档对象模型(DOM)解析程序。API 30比直接使用基于事件和基于树的解析程序更有利,因为允许用户指明他要从文档中提取的特定数据。如本领域熟练技术人员所知道的,基于事件解析程序按顺序一次一行地扫描文档且一次提供一个数据项(如一标记),要求用户记住状态以找到所要的数据。基于树的解析程序将整个文档载入存储器,但用户仍需要遍历所载入的文档以找到所要的数据。将在下面参考图4更详细地描述前面所指出的优点。
导入API 30还与回调组件50联系。回调组件50与导入API 30通信以在提取第一数据之后确定要从电子文档导入的附加内容项。例如,如果电子文档中的一个元素或节点与多于一个内容项相关(如名称的列表),则导入API 30将提取第一个名称,然后访问回调组件50来提取下一名称直到已经提取表中所有的名称。换句话说,对于项的列表,导入API 30能顺序地将表中每一项传递至回调组件50中,在那里API 30的客户机20随后能对该项做它想做的操作。在导入过程中,客户机20也能用回调组件50反过来与API 30通信以改变对剩余数据的处理。在不同实施例中,由API 30导入的内容70可以是数据流、存储器缓冲区或文件。
现在参考图3,示出一个方框图,说明与本发明实施例结合使用的例示性软件体系结构300。这个结构包括用于从一个源导出数据建立电子文档90的导出应用程序接口(API)40。在一个实施例中,所建立的文档90具有分层文件结构,如XML文档。如图3所示,导出API 40从客户计算机20接收数据。在另一个实施例中,可从服务器接收数据,诸如远程计算机服务器49。导出的数据可包括文本字符串或其它数据类型变量的固定列表。
导出API 40与编写器80联系,用以接收要导出的由API 40指定的数据并使用这个数据在所建立的电子文档90中编写元素、节点、属性或文本。导出API 40管理编写器80,用以指定要导出的特定数据。在一个实施例中,编写器80可以是一XML导出器组件,如华盛顿雷德蒙的微软公司的OFFICE XMLEXPORTER。导出API 40允许单个API调用编写多个数据片(如XML内容)或整个文件。这比直接访问编写器80更有利,因为编写器80一次只允许编写一个数据片。应该理解,用于实现导出API 40的语法非常类似于导入API 30。这样,在本发明的实施例中,用户可使用导出API 40和导入API 30来编写及以后读出用户自己的数据,尽管不要求用户两者皆用。前面所指出的导出API 40的优点将在下面参考图5描述。
图4是一流程图,示出一例示性例程300,用于依照本发明实施例在一个计算机系统中,可有选择地从诸如XML文档这样的电子文档导入内容。为说明的目的,图4是根据图1和2描述的。
例程400开始于方框410,在这里导入API 30从个人计算机20或远程计算机服务器49接收一个电子文档。在方框415,导入API 0在这个文档中指定要导入的数据。用户可在应用程100(可能是字处理器)指定要导入的特定数据,接着应用程序100将这个信息传送给导入API 30。例如,在上面列出的例示性XML文档中,用户可能感兴趣于<Service>元素内容、<Subscription>节点内容、<Currency>元素内容(例如记账货币类型)、<Amount>元素内容(例如总结余影响),但不关心不向用户传达任何有用信息的<SOAP-ENV>元素和属性。通过选择特定的节点和元素,用户也选择了包含在它们当中的所有元素。例如,<Subscription>节点包含了<BalanceImpacts>节点,其中<BalanceImpact>是一个任意长度的元素列表。<Services>元素还包含ServiceNames的任意列表。
例程400在方框420继续,在这里解析程序60搜索电子文档查找由导入API30指定的数据(即节点和元素)。在方框425,导入API 30从已解析的文档的数据提取内容。如上简述,在一个实施例中,解析程序60是基于事件的解析程序,在其中扫描文档中的每个元素,并由导入API 30提取在每个元素中所包含的内容。例如,解析程序60针对先前由用户指定的<Services>元素扫描文档,并且导入API 30从<Service>元素属性“Name”提取文本字符串“Someservice”。以相似的方式扫描所有元素,直到所有与指定的元素关联的内容都已经从文档中提取出来。
例程400在方框430继续,在这里导入API 30确定是否有另外的内容项包含在指定要导入的元素中。如果没有另外的内容项,例程400随后结束。然后客户机20可选择用提取的内容建立一个新文档(如使用导出API 40)。反过来,如果有另外的内容项包含在指定要导入的元素中,则例程400返回到方框425,在那里导入API 30提取下一个另外的内容项。例如,在导入API 30从<Service>元素的“Name”属性中提取“Some service”字符串之后,API 30确定如果还有另外的<Service>元素包含“Name”属性,则从每一个中提取内容,并将它传递给回调组件50以打印出所要的字符串。
在图4中所示的例程,用于使用API 30可用处理XML数据的计算机代码实现,如下所示的例示性代码实例。
导入API的例示性使用:
Illustrative Use of Import API:
MsoFImportXML(pistm,FMyCallback(),NULL,"o CancelResponse;o Services;(*o
Service;a0Name;c;p1;)c;o Subscriptions;(*o Subscription;a1 ID;o
BalanceImpacts;p2;(*o BalanceImpact;a2 ImpactType;e3 Amount;c;p3;)c;c;)c;e4
Currency;e5 Amount;p4;f;",NULL,msoffixSOAP);
在上面所示导入API 30的例示性使用中,客户机20将传入一个动作字符串,这个动作字符串指定所要的内容(例如一个或多个<Service>元素的“Name”属性)。动作字符串是指示要搜索的内容或在某个特殊点上所期望的内容的各个动作的序列。在上面的例子中,“o CancelResponse”动作表示到XML文档中下一个<CancelResponse>开始元素,″a1 ID″动作表示拷贝当前元素的“ID”属性至一组提取的字符串的入口#1,客户机能在其回调中或在导入API结束后查看这组字符串,“p2”动作表示调用回调的第二种情况,等等。动作字符串还可包含动作组,它们是标记要以某种方式处理的一连串动作的方法。在上面的例子中,动作组由括号包围的有关动作表示,在这里标有星号的动作组表示所指示的这组动作可重复0次或多次,构成一个列表。动作组的另一个例子(未在上述例示性应用中示出)指示一组动作或期望在XML文档中给定点出现的内容片。
例示性的回调函数:
 BOOL,FMyCallback(void*pvClient,MSOHISD*phisd,MSOXPS*rgxps,int
 iState)
 {
   switch(iState){
   case 1://Processing the<Services>list
     printf("<Service>Name attribute=%s\n",rgxps[0].wz);
     break;
   case 2://Processing the<Subscriptions>outer list
     printf("<Subscription>ID attribute=%s\n",rgxps[1].wz);
     break;
   case 3://Processing the<BalanceImpacts>inner nested list
     printf("<BalanceImpact>ImpactType attribute=%s\n",rgxps[2].wz);
     printf("<Amount>element text=%s\n",rgxps[3].wz);
     break;
   case 4://Processing final items after the lists above
     printf("Final<Currency>element text=%s\n",rgxps[4].wz);
     printf("Final<Amount>element text=%s\n",rgxps[5].wz);
     break;
  }
  return TRUE;
}
应该理解,导入API 30在客户机20不指定回调函数时也可使用,如当文档不包含任何列表或重复元素时。例如,如果XML文件只包含一个<Service>元素、一个<BalanceImpact>节点和一个<Subscription>节点时,导入API 30能够以如下所示的一行代码导入文件:
WCH,R wzServiceName[255],wzSubscriptionID[10],
wzBalanceImpactImpactType[255],wzBalanceImpactAmount[20],
wzCurrency[20],wzTotalAmount[20];
MSOXPS rgxps[6];
MsoInitXpsBuffer(&rgxps[0],wzServiceName,255);
MsoInitXpsBuffer(&rgxps[1],wzSubscriptionID,10);
MsoInitXpsBuffer(&rgxps[2],wzBalanceImpactImpactType,255);
MsoInitXpsBuffer(&rgxps[3],wzBalanceImpactAmount,20);
MsoInitXpsBuffer(&rgxps[4],wzCurrency,20);
MsoInitXpsBuffer(&rgxps[5],wzTotalAmount,20);
MsoFImportXML(pistm,NULL,NULL,"o CancelResponse;o Services;o
Service;a0Name;c;c;o Subscriptions;o Subscription;a1ID;o BalanceImpacts;o
BalanceImpact;a2 ImpactType;e3 Amount;c;c;c;c;e4 Currency;e5 Amount;f;",
rgxps,msoffixSOAP);
printf("<Service>Name attribute=%s\n",      wzServiceName);
printf("<Subscription>ID attribute=%s\n",   wzSubscriptionID);
printf("<BalanceImpact>ImpactType attribute=%s\n",
wzBalanceImpactImpactType);
printf("<Amount>element text=%s\n",         wzBalanceImpactAmount);
printf("Final<Currency>element text=%s\n",   wzCurrency);
printf("Final<Amount>element text=%s\n",     wzTotalAmount);
这样,导入API 30方便地允许用户可有选择地用单行代码从分层结构化文档导入内容,以及用单行代码和回调语句从包含列表的分层结构化文档中可有选择地导入内容。如上简单讨论的,API 30可作为数据流、存储器缓冲区或文件导入内容。
图5是流程图,示出一个例示性例程,用于依照本发明实施例在计算机环境中有选择地导出内容建立诸如XML文件这样的电子文档。为说明的目的,图5是根据图1和3描述的。
例程500始于方框510,在这里导出API 40指定要导出的数据。如上简短描述的,数据可包括文本字符串或变量的固定列表。用户可指定在应用程序100(可以是字处理器)所要导出的特定数据,接着应用程序100将此信息传送给到导出API 40。在指定要导出数据中,用户还将指定在所建立的文档中如何表示数据。例如,用户可指定文本字符串“Services”表示为元素而“Name”表示为“Service”元素的属性。在方框520,导出API 40将指定的数据发送到编写器80,编写器80使用指定的数据建立文档。
在图5中所示的例程可作为一个函数调用实现,这个函数调用使用下面所示的例示性代码建立上面所列的例示性XML文件。
导出API的例示性使用:
MsoFExportXML(pistm,"n o;o CancelResponse;o Services;e Service;a Name
"Some service";c;o Subscriptions;o Subscription;a ID"Subscription ID";o
BalanceImpacts;o BalanceImpact;a ImpactType"Type of impact";e Amount"Non-
zero amount of impact";c;c;c;c;e Currency"Account Currency type";e Amount
"Total balance impact";c;",msogrffexSOAP)
在上面所示的导出API例示性使用中,客户机20传入一个用与导入API 30例示性使用中的动作字符串类似的方式格式化的动作字符串。这里,动作字符串是指示要写到XML文档的内容的各个动作的序列。在上例中,“e Amount’Total bal ance impact’”动作表示编写包含文本“Total bal ance impact的XML元素<Amount>,“c”动作表示编写匹配当前范围的结束元素,等等。上面的例示性代码行可生成没有列表的完整XML文档。所生成的文档对应于上面图4的说明中所示的非列表导入代码实例(即没用回调函数),并能被这个导入代码导入。
MSOHEXS hexs;
MsoFInitExportXML(pistm,&hexs);
MsoFExportXMLContents(&hexs,"n o;o CancelResponse;o Services;");
while(FSomeItemsLeftInMyList(wzServiceName))//Fill out wzServiceName with
current service string.
MsoFExportXMLContents2(&hexs,"e Service;a Name%0;",&wzServiceName);//
Write:<Service Name="Some service">
MsoFExportXMLContents(&hexs,"c;");
//And so on for the rest ofthe tags...
MsoFFinishExportXML(&hexs);
上面例示性代码行可用于建立有列表的XML文件。所建立的文件对应于上面在图4说明中所示的列表导入代码实例(即用回调函数),并能被这导入代码导入。这样,导出API 40方便地允许用户可有选择地导出内容,一次包括多个元素和属性,用单行代码建立分层结构化文档,以及仅用几行代码建立包含列表的分层结构化文档。
如上所述,可实现一个应用程序接口(API)用于从诸如XML文件这样的分层结构化文档中导入内容。这个API结合解析程序运行,以扫描文档及从选定的元素、节点、属性和文本中提取内容。这个API还利用回调组件处理所提取的内容(如从列表中)。这个导入API允许指定要从文档中提取的特定数据。这比直接使用基于事件的解析程序有利,它们按顺序一次从文档中提供一个内容项;这比直接使用基于树的解析程序有利,它们需要遍历所载入的文件以找到所要的数据。
还可以实现一个API用于导出数据建立诸如XML文件这样的分层结构化文档。这个API结合编写器运行以接收数据并导出作为分层结构化文档中的元素、节点、属性和文本的数据。导出API允许在一次API调用中编写多个数据片(如XML内容)或整个文件。这比使用一个编写器(诸如一个XML编写器)有利得多,因为编写器一次只写一个数据片。应该理解导入API 30和导出API 40可以用被管理的或非被管理的代码实现。对于本领域熟练技术人员,通过考虑在此公开的本发明的说明书和实践,本发明的其它实施例将是显而易见的。

Claims (20)

1.一种通过导入应用程序接口API从电子文档中有选择地导入内容的方法,包括:
接收具有数据和与所述数据关联的内容项的电子文档,所述数据是用分层文件结构安排的;
通过所述导入API指定在所述电子文档中与至少一个内容项关联的特定数据;
通过与所述导入API相联系的解析程序针对指定的数据解析所述电子文档;以及
通过所述导入API从所述电子文档提取与所述指定的数据关联的第一个内容项以导入内容,从而允许用户指定从电子文档导入的特定数据而不是解析文档中的全部数据。
2.如权利要求1所述的方法,其特征在于,还包括:
在从所述电子文档提取与所述指定的数据关联的第一个内容项之后,通过与所述导入API相联系的回调组件确定是否还有任何另外的与所述指定的数据关联的内容项;以及
如果有另外的与所述指定的数据关联的内容项,则从所述电子文档提取与所述指定的数据关联的下一个内容项。
3.如权利要求1所述的方法,其特征在于,所述分层文件结构是XML。
4.如权利要求1所述的方法,其特征在于,所述指定的内容是XML元素。
5.如权利要求1所述的方法,其特征在于,所述指定的内容是XML属性。
6.如权利要求1所述的方法,其特征在于,所述指定的内容是XML节点。
7.如权利要求1所述的方法,其特征在于,所述指定的内容是文本。
8.如权利要求1所述的方法,其特征在于,所述内容是从数据流导入的。
9.如权利要求1所述的方法,其特征在于,所述内容是从存储器缓冲区导入的。
10.如权利要求1所述的方法,其特征在于,所述内容是从文件导入的。
11.一种在计算机系统中从源计算机导出分层结构数据以在计算机系统中建立电子文档而无需每次编写一段数据的方法,包括:
通过与编写器相联系的导出应用程序接口API执行:
在所述导出API接收来自所述计算机系统中的源计算机的所述数据以建立所述电子文档;
通过管理所述编写器的所述导出API指定一组要导出以建立所述电子文档的数据;以及
导出所指定的所述一组数据以建立所述电子文档,其中所述导出所指定的所述一组数据包括在单个API调用中写入多段数据,
从而所述数据包括文本串或变量的固定列表。
12.如权利要求11所述的方法,其特征在于,所述建立的文档具有分层文件结构,所述源计算机包括客户计算机或服务器。
13.如权利要求12所述的方法,其特征在于,所述分层文件结构是XML。
14.如权利要求11所述的方法,其特征在于,所述导出所指定的所述一组数据以建立所述电子文档包括建立至少一个XML元素。
15.如权利要求11所述的方法,其特征在于,所述导出所指定的所述一组数据以建立所述电子文档包括建立至少一个XML属性。
16.如权利要求11所述的方法,其特征在于,所述导出所指定的所述一组数据以建立所述电子文档包括建立至少一个XML节点。
17.如权利要求11所述的方法,其特征在于,所述导出所指定的所述一组数据以建立所述电子文档包括建立文本。
18.如权利要求11所述的方法,其特征在于,所述指定的一组数据被导出到数据流。
19.如权利要求11所述的方法,其特征在于,所述指定的一组数据被导出到存储缓冲区。
20.如权利要求11所述的方法,其特征在于,所述指定的一组数据被导出到文件。
CNB200310120703XA 2002-11-27 2003-11-27 用于导入和导出分层结构化数据的方法 Expired - Fee Related CN100527121C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/306,022 2002-11-27
US10/306,022 US7191186B1 (en) 2002-11-27 2002-11-27 Method and computer-readable medium for importing and exporting hierarchically structured data

Publications (2)

Publication Number Publication Date
CN1504925A CN1504925A (zh) 2004-06-16
CN100527121C true CN100527121C (zh) 2009-08-12

Family

ID=32312191

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB200310120703XA Expired - Fee Related CN100527121C (zh) 2002-11-27 2003-11-27 用于导入和导出分层结构化数据的方法

Country Status (17)

Country Link
US (1) US7191186B1 (zh)
EP (1) EP1426877B1 (zh)
JP (1) JP2004178602A (zh)
KR (1) KR101067398B1 (zh)
CN (1) CN100527121C (zh)
AT (1) ATE481683T1 (zh)
AU (1) AU2003262290B2 (zh)
BR (1) BR0306749A (zh)
CA (1) CA2448787C (zh)
DE (1) DE60334185D1 (zh)
HK (1) HK1066304A1 (zh)
MX (1) MXPA03010779A (zh)
MY (1) MY134408A (zh)
PL (1) PL363561A1 (zh)
RU (1) RU2338245C2 (zh)
TW (1) TWI334551B (zh)
ZA (1) ZA200308722B (zh)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040205216A1 (en) * 2003-03-19 2004-10-14 Ballinger Keith W. Efficient message packaging for transport
US8296354B2 (en) * 2004-12-03 2012-10-23 Microsoft Corporation Flexibly transferring typed application data
EP1729235A1 (en) * 2005-06-03 2006-12-06 Agfa Corporation Structured reporting report data manager
US8711142B2 (en) * 2005-08-11 2014-04-29 International Business Machines Corporation Visual model importation
CN1979478B (zh) * 2005-12-09 2010-05-26 北京书生国际信息技术有限公司 文档处理系统和文档处理方法
WO2007065355A1 (fr) * 2005-12-05 2007-06-14 Beijing Sursen Co., Ltd Systeme et procede de traitement hierarchise de documents
JP5530101B2 (ja) 2005-12-05 2014-06-25 サーセン コーポレイション 文書処理システム及びその方法
CN1979479B (zh) * 2005-12-09 2010-06-02 北京书生国际信息技术有限公司 文档处理系统和文档处理方法
CN100547590C (zh) * 2005-12-05 2009-10-07 北京书生国际信息技术有限公司 文档处理系统
CN102043821B (zh) * 2005-12-09 2013-03-27 北京书生国际信息技术有限公司 一种显示文档的方法
US7836055B2 (en) * 2006-01-31 2010-11-16 Microsoft Corporation XNA relationship management
US7925710B2 (en) * 2006-01-31 2011-04-12 Microsoft Corporation Simultaneous API exposure for messages
US20070266309A1 (en) * 2006-05-12 2007-11-15 Royston Sellman Document transfer between document editing software applications
CN100458786C (zh) * 2006-06-15 2009-02-04 Ut斯达康通讯有限公司 基于应用定制解析xml文档的方法及装置
US8732661B2 (en) * 2007-02-01 2014-05-20 Microsoft Corporation User experience customization framework
EP2206051A2 (en) 2007-09-28 2010-07-14 Xcerion Aktiebolag Network operating system
US8370735B2 (en) * 2008-06-27 2013-02-05 Microsoft Corporation Efficient, non-blocking mechanism for incrementally processing arbitrary sized XML documents
US10943030B2 (en) * 2008-12-15 2021-03-09 Ibailbonding.Com Securable independent electronic document
JP5369794B2 (ja) 2009-03-17 2013-12-18 株式会社リコー 情報処理装置、情報処理方法およびプログラム
US10114840B2 (en) * 2009-09-29 2018-10-30 Sap Se Customer data separation in a service provider scenario
CN101706779B (zh) * 2009-10-12 2013-05-08 南京联创科技集团股份有限公司 基于oracle的伞状数据导入导出方法
CN102122280B (zh) * 2009-12-17 2013-06-05 北大方正集团有限公司 一种智能提取内容对象的方法及系统
US8380753B2 (en) 2011-01-18 2013-02-19 Apple Inc. Reconstruction of lists in a document
JP5760493B2 (ja) * 2011-02-18 2015-08-12 村田機械株式会社 中継通信システム
US9922089B2 (en) * 2012-07-18 2018-03-20 Software Ag Usa, Inc. Systems and/or methods for caching XML information sets with delayed node instantiation
US9760549B2 (en) 2012-07-18 2017-09-12 Software Ag Usa, Inc. Systems and/or methods for performing atomic updates on large XML information sets
US10515141B2 (en) 2012-07-18 2019-12-24 Software Ag Usa, Inc. Systems and/or methods for delayed encoding of XML information sets
CN103714062B (zh) 2012-09-28 2017-05-31 国际商业机器公司 基于依赖关系导入实体‑联系模型数据的方法和系统
CN104753891B (zh) * 2013-12-31 2019-04-05 中国移动通信集团湖南有限公司 一种xml报文解析方法及装置
US9635089B2 (en) * 2014-12-31 2017-04-25 Verizon Patent And Licensing Inc. Auto suggestion in search with additional properties
US10678777B2 (en) 2017-09-27 2020-06-09 Fomtech Limited System and method for data aggregation and comparison
EP3462334A1 (en) 2017-09-27 2019-04-03 Fomtech Limited System and method for data aggregation and comparison

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09269940A (ja) * 1996-03-29 1997-10-14 Sharp Corp 日時等を抽出する装置
JP3896702B2 (ja) 1998-09-18 2007-03-22 富士ゼロックス株式会社 文書管理システム
US6427123B1 (en) * 1999-02-18 2002-07-30 Oracle Corporation Hierarchical indexing for accessing hierarchically organized information in a relational system
US6862710B1 (en) * 1999-03-23 2005-03-01 Insightful Corporation Internet navigation using soft hyperlinks
US6549916B1 (en) * 1999-08-05 2003-04-15 Oracle Corporation Event notification system tied to a file system
US6947953B2 (en) * 1999-11-05 2005-09-20 The Board Of Trustees Of The Leland Stanford Junior University Internet-linked system for directory protocol based data storage, retrieval and analysis
US6529905B1 (en) * 2000-01-11 2003-03-04 Frontline Solutions, Inc. Method and system for allowing multiple users to edit a hierarchical data structure
US6819339B1 (en) * 2000-02-24 2004-11-16 Eric Morgan Dowling Web browser with multilevel functions
JP2002094472A (ja) 2000-05-30 2002-03-29 Matsushita Electric Ind Co Ltd データ取得装置及びその方法
JP2002140350A (ja) 2000-11-02 2002-05-17 Toshiba Corp 入力データの履歴管理装置及び管理方法及び該管理方法が記憶された情報記憶媒体
GB2373698A (en) * 2001-03-20 2002-09-25 Copyn Ltd Storage of a portion of a web-page containing a link
JP3842573B2 (ja) * 2001-03-30 2006-11-08 株式会社東芝 構造化文書検索方法、構造化文書管理装置及びプログラム

Also Published As

Publication number Publication date
US7191186B1 (en) 2007-03-13
AU2003262290B2 (en) 2009-09-17
KR20040047657A (ko) 2004-06-05
MXPA03010779A (es) 2005-04-19
MY134408A (en) 2007-12-31
TWI334551B (en) 2010-12-11
EP1426877B1 (en) 2010-09-15
ATE481683T1 (de) 2010-10-15
DE60334185D1 (de) 2010-10-28
PL363561A1 (en) 2004-05-31
KR101067398B1 (ko) 2011-09-27
EP1426877A3 (en) 2007-09-12
CA2448787C (en) 2012-01-17
CA2448787A1 (en) 2004-05-27
EP1426877A2 (en) 2004-06-09
RU2338245C2 (ru) 2008-11-10
RU2003134278A (ru) 2005-05-10
JP2004178602A (ja) 2004-06-24
HK1066304A1 (en) 2005-03-18
TW200422881A (en) 2004-11-01
AU2003262290A1 (en) 2004-06-10
BR0306749A (pt) 2004-10-13
ZA200308722B (en) 2004-10-08
CN1504925A (zh) 2004-06-16

Similar Documents

Publication Publication Date Title
CN100527121C (zh) 用于导入和导出分层结构化数据的方法
CN100504766C (zh) 实现编程接口的方法及计算机系统
US7526490B2 (en) Method of and system for providing positional based object to XML mapping
US6782505B1 (en) Method and system for generating structured data from semi-structured data sources
CN100447779C (zh) 文档信息处理设备及文档信息处理方法
US20040221233A1 (en) Systems and methods for report design and generation
US20030172193A1 (en) User interface generator and method of automatically generating a user interface
US20110213791A1 (en) Creating data in a data store using a dynamic ontology
Pan et al. Semi-automatic wrapper generation for commercial web sources
US7827205B2 (en) Bi-directional data mapping tool
EP1280055B1 (en) Method and computer system for creating and processing a browser compliant human interface description
US20070150494A1 (en) Method for transformation of an extensible markup language vocabulary to a generic document structure format
Raposo et al. The wargo system: Semi-automatic wrapper generation in presence of complex data access modes
US7447697B2 (en) Method of and system for providing path based object to XML mapping
Liu et al. An XML-enabled data extraction toolkit for web sources
US7890855B2 (en) Method and computer system for separating and processing layout information and data of a document
JP2001125855A (ja) 動的Webページ生成プログラム
CN115437616A (zh) 一种基于JPA的Web代码自动生成系统
US8719693B2 (en) Method for storing localized XML document values
JP2008165409A (ja) 電子帳票検索装置、電子帳票検索方法及びプログラム
Chang et al. Supporting unified interface to wrapper generator in Integrated Information Retrieval
US20030154252A1 (en) Data processing method, program, and information processor
Mukhitova et al. Implementation of an adaptive model of input and editing information based on XSLT transformations for heterogeneous data
Mrissa et al. Towards context-based mediation for semantic web services composition
Ng et al. Web Information Extraction via Web Views

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150429

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150429

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191018

Address after: California, USA

Patentee after: Si Wei Yun

Address before: Washington State

Patentee before: Micro soft technique license Co., Ltd

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090812

Termination date: 20191127

CF01 Termination of patent right due to non-payment of annual fee