PB导出XML.docx_第1页
PB导出XML.docx_第2页
PB导出XML.docx_第3页
PB导出XML.docx_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

pb9中数据窗口的XML特性pb9中数据窗口的XML特性(一、原理篇)从pb9开始,DataWindow开始支持直接从XML文档中导入数据,将检索到的数据保存为XML文档,以及使用XSL格式对象(XSL-FO)的新功能。本文根据XMLFeaturesinPowerBuilder9.0相关内容节选翻译。这是第一部分。1、数据窗口导出引擎(DataWindowExportEngine)它是数据窗口新增的组件,主要利用导出模板(ExportTemplates)作为基础结构来转换行数据到XML格式数据。引擎通过分析模板内容格式化数据,然后输出到XML形式。因为模板本身也是XML文档,所以它首先也需要被解析。导出引擎通过XML解析器(XMLParser)的服务来分析模板文件。在低层,XML解析通过C+和ApacheXerces实现,利用一个适配器接口(pbxerces90.dll)来访问Xerces解析器。2、导出模板(ExportTemplates)一个导出模板定义了数据窗口元素(DataWindowelements)和XML对应关系。下面的数据窗口对象可以使用在导出模板:列(Column)计算列(ComputedColumn)文本(TextControl)计算域(ComputedField)内嵌报表(NestedReport)上面的数据窗口对象可以被映射到以下的XML构造元素(Element)属性(Attribute)注意:注释(comments)和处理指令(processinginstructions)可以被添加到模板的任意部分,但是不能和其建立映射。CDATA可以被添加到任何元素之内,但是也不能被映射。内嵌报表(NestedReport)只能和元素建立映射,不能是属性。当导出引擎分析XML模板内容时,根据模板中已经定义的映射关系,将元素映射到实际的数据窗口控件和它们的文本内容。在映射操作成功完成后,引擎将借助XMLParser/GeneratorEngine的帮助,实现最后的XML语法生成。导出引擎是数据窗口定义的一部分。一个数据窗口可以定义多个导出模板,模板作为数据窗口一个关联的对象被保存在PBL和SRD当中。这里引入一个新的数据窗口属性:Export.XML.UseTemplate,用来指定在某次导出操作中使用的模板对象名称。在程序运行(runtime)和设计(designtime)时都可以修改这个属性。XML导出模板的语法见列表1:列表1:XMLexporttemplatesyntax(indentedforclarity)export.xml(usetemplate=t_ordersmetadatatype=2savemetadata=1template=(omment=OrderitemswithexternalDTDname=t_orderspublicid=c:xmldworders.dtdxml=)pb9中数据窗口的XML特性(二、编辑导出模板)在PowerBuilder9.0中数据窗口编辑画板新增了定义和编辑XML导出模板的视图。视图中用TreeView展示模板的结构,XML实体(entities)被表示成树的节点,并利用不同的图标和字体颜色区别实体的类型。文本数据被显示为各自元素节点的子节点,在这里,元素的结束标签(end-tags)以及标签定界符(Markupdelimiters)被隐藏了,但都是存在的。编辑时候,仅仅只有一个导出模板可以在视图中打开。图1:数据窗口画板中的新建XML导出模板视图表1:列举了导出模板中所有可能的XML构造通过在treeview的右键点击弹出菜单操作,可以对模板进行新建、打开、编辑、删除等操作。个别菜单项说明:根节点弹出菜单项中:SchemaOptions:弹出对话框,可以编辑当使用内嵌XMLschema模式的根节点元素以及命名空间(namespace)的前缀(prefix)和URI.导出模板细节部分(ExportTemplateDetailSection)如图1,我们可以看到一条灰线,该灰线的作用是分隔出模板的headersection和detailsection,有些类似于数据窗口编辑画板中的细带(detailband)。通过选择某个元素节点的“StartsDetail”右键菜单项,该条线可以被重新定位到该位置。此元素节点就被指定为Detail开始元素.只有一个元素可以被指定为Detail开始元素。根节点不能成为Detail开始元素。在默认情况下,根节点元素的第一个子节点被指定为Detail开始元素。在导出时候,只有Detail开始元素以及它的兄弟和子节点会逐行迭代的生成,这个特点和数据窗口的header和detail区域类似。在数据窗口元素和XML节点间建立映射(MappingDataWindowElementstoXMLNodes)当目标导出XML文档的结构确定后,就可以创建模板了。当选择NewDefault菜单项时,新建的模板将自动将元素映射到数据窗口列和计算列上。如果你想导出的XML文档的结构与默认模板不同,就需要自定义或者修改导出模板,方法是先修改节点标签,然后定位在某个节点上,在“DataWindowControlreferencedialog”弹出对话框中选择对应的数据窗口控件对象。注意:任何映射到XML元素的数据值,都会被当作字符,无视对应列其实际的数据类型(number,date等等)。pb9中数据窗口的XML特性(三、导出XML)一、导出XML方法(ExportingXML)DataWindow或者DataStore中的数据都可以导出到XML形式,方法和导出PSR或者TXT等格式类似。具体可以使用以下几种方法:1、在数据窗口画板编辑状态,当Preview视图打开时候,选择SaveRowsAs菜单项;2、使用SaveAs()函数dw_1.SaveAs(c:foobar.xml,XML!,TRUE)3、使用数据窗口点符号属性方式ls_xml=dw_1.object.datawindow.data.xml4、使用数据窗口Describle函数ls_xml=dw_1.Describe(datawindow.data.xml)二、与导出XML有关的DataWindow属性数据窗口XML相关属性决定了导出XML文档的相关形式,有以下属性:1、导出时候使用哪一个模板dw_1.Object.DataWindow.Export.XML.UseTemplate=value2、导出时候元数据的类型(MetaDataExternal!,MetaDataInternal!),即DTDSchema是内签在导出XML文件中,还是以单独的文件存在dw_1.Object.DataWindow.Export.XML.MetaDataType=value3、导出时候那种元数据的将被同时保存(XMLDTD!,XMLSchema!,XMLNone!)注:DTD和XMLSchema都用来定义XML中数据表示的语法格式。dw_1.Object.DataWindow.Export.XML.SaveMetaData=value4、导出时候XMLheaderdata在detailrows中是否重复(类似于按headerdata分组)dw_1.Object.DataWindow.Export.XML.HeadGroups=value5、导出文件是否允许空白(whitespace)存在dw_1.Object.DataWindow.Export.XML.IncludeWhiteSpace=valuepb9中数据窗口的XML特性(四、导入XML)一、导入XML方法(ImportingXML)符合格式的XML数据可以导入到DataWindow或者DataStore中,具体方法如下:1、从XML文件中导入dw_1.ImportFile(XML!,c:foobar.xml*)2、从包含XML的字符串中导入dw_1.ImportString(XML!,ls_xml*)3、从剪贴板中导入XML数据ls_xml=dw_1.ImportClipboard()*指函数的可选参数二、与导入XML有关的DataWindow属性1、Import.XML.UseTemplate导入时候XML必须匹配哪一个模板2、Import.XML.Trace导入时是否将trace信息记录到文件中3、Import.XML.TraceFile导入时产生的trace信息所保存的文件名如果Trace选项打开,而TraceFile没有定义,则产生的trace信息自动记录到当前目录下的pbxmtrc.log文件。三、判断XML是否格式良好(wellform

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论