pb9中数据窗口saveas的XML特性

上传人:飞*** 文档编号:47847325 上传时间:2018-07-05 格式:PDF 页数:6 大小:201.44KB
返回 下载 相关 举报
pb9中数据窗口saveas的XML特性_第1页
第1页 / 共6页
pb9中数据窗口saveas的XML特性_第2页
第2页 / 共6页
pb9中数据窗口saveas的XML特性_第3页
第3页 / 共6页
pb9中数据窗口saveas的XML特性_第4页
第4页 / 共6页
pb9中数据窗口saveas的XML特性_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《pb9中数据窗口saveas的XML特性》由会员分享,可在线阅读,更多相关《pb9中数据窗口saveas的XML特性(6页珍藏版)》请在金锄头文库上搜索。

1、pb9 中数据窗口的 XML 特性 2009-07-07 13:10 本文转自: http:/ pb9 开始, DataWindow开始支持直接从XML 文档中导入数据,将检索到的数 据保存为 XML文档,以及使用 XSL格式对象 (XSL-FO) 的新功能。本文根据XML Features in PowerBuilder? 9.0相关内容节选翻译。这是第一部分。1、 数据窗口导出引擎( DataWindow Export Engine )它是数据窗口新增的组件 , 主要利用导出模板( Export Templates)作为 基础结构来转换行数据到XML格式数据。引擎通过分析模板内容格式化数据

2、,然 后输出到 XML形式。因为模板本身也是XML 文档,所以它首先也需要被解析。 导 出引擎通过 XML解析器( XML Parser )的服务来分析模板文件。在低层,XML解 析通过 C+ 和 Apache Xerces 实现,利用一个适配器接口(pbxerces90.dll)来访 问 Xerces 解析器。2、导出模板( Export Templates )一个导出模板定义了数据窗口元素(DataWindow elements )和 XML对应关系。下面的数据窗口对象可以使用在导出模板:? 列(Column ) ? 计算列( Computed Column ) ? 文本( Text Co

3、ntrol) ? 计算域( Computed Field ) ? 内嵌报表( Nested Report )上面的数据窗口对象可以被映射到以下的XML构造? 元素( Element) ? 属性 (Attribute)注意: 注释( comments )和处理指令( processing instructions)可以被添加 到模板的任意部分, 但是不能和其建立映射。 CDATA 可以被添加到任何元素之内, 但是也不能被映射。内嵌报表(Nested Report )只能和元素建立映射,不能是 属性。当导出引擎分析 XML模板内容时, 根据模板中已经定义的映射关系,将元素映射 到实际的数据窗口控件

4、和它们的文本内容。在映射操作成功完成后, 引擎将借助XML Parser/Generator Engine的帮助,实现最后的XML语法生成。导出引擎是数据窗口定义的一部分。一个数据窗口可以定义多个导出模板,模板 作为数据窗口一个关联的对象被保存在PBL和 SRD 当中。这里引入一个新的数据 窗口属性:Export.XML.UseTemplate ,用来指定在某次导出操作中使用的模板对 象名称。在程序运行( runtime )和设计(designtime )时都可以修改这个属性。 XML导出模板的语法见列表1:列表 1: XML export template syntax (indented

5、for clarity) export.xml( usetemplate=“t_orders“ metadatatype=2 savemetadata=1 template=( omment=“Order items with external DTD“ name=“t_orders“ publicid=“c:xmldworders.dtd“ xml=“ “ ) ) 二、编辑导出模板在 PowerBuilder 9.0中数据窗口编辑画板新增了定义和编辑XML导出模板的视 图。视图中用 TreeView 展示模板的结构, XML 实体( entities)被表示成树的 节点,并利用不同的图标和字

6、体颜色区别实体的类型。文本数据被显示为各自元 素节点的子节点, 在这里,元素的结束标签 (end-tags ) 以及标签定界符(Markup delimiters)被隐藏了,但都是存在的。编辑时候,仅仅只有一个导出模板可以在视图中打开。图 1:数据窗口画板中的新建XML导出模板视图表 1:列举了导出模板中所有可能的XML构造通过在 treeview的右键点击弹出菜单操作, 可以对模板进行新建、 打开、编辑、 删除等操作。个别菜单项说明:根节点弹出菜单项中: Schema Options, :弹出对话框,可以编辑当使用内嵌XML schema 模式的根 节点元素以及命名空间 (namespace

7、)的前缀 (prefix)和 URI. 导出模板细节部分( Export Template Detail Section)如图 1,我们可以看到一条灰线,该灰线的作用是分隔出模板的header section 和 detail section,有些类似于数据窗口编辑画板中的细带(detail band)。 通过选择某个元素节点的“Starts Detail ”右键菜单项, 该条线可以被重新定位到该位置。此元素节点就被指定为Detail 开始元素 . 只有一个元素可以被指定为Detail 开始元素。根节点不能成为Detail 开始元 素。在默认情况下,根节点元素的第一个子节点被指定为Detail

8、 开始元素。在 导出时候,只有 Detail 开始元素以及它的兄弟和子节点会逐行迭代的生成,这 个特点和数据窗口的header 和 detail区域类似。在数据窗口元素和XML节点间建立映射 (Mapping DataWindow Elements to XML Nodes) 当目标导出 XML文档的结构确定后,就可以创建模板了。当选择New Default 菜单项时,新建的模板将自动将元素映射到数据窗口列和计算列上。如果你想导 出的 XML文档的结构与默认模板不同, 就需要自定义或者修改导出模板,方法是 先修改节点标签 , 然后定位在某个节点上 , 在“DataWindow Control

9、reference dialog ”弹出对话框中选择对应的数据窗口控件对象。注意: 任何映射到 XML元素的数据值,都会被当作字符,无视对应列其实际的数 据类型( number, date 等等)。三、导出 XML 一、导出 XML方法(Exporting XML) DataWindow 或者 DataStore 中的数据都可以导出到XML形式,方法和导出PSR 或者 TXT等格式类似。具体可以使用以下几种方法:1、在数据窗口画板编辑状态,当Preview 视图打开时候,选择Save Rows As 菜单项; 2、使用 SaveAs()函数dw_1.SaveAs( “c:foobar.xml“

10、, XML!, TRUE ) 3、使用数据窗口点符号属性方式ls_xml = dw_1.object.datawindow.data.xml 4、使用数据窗口 Describle函数ls_xml = dw_1.Describe( “datawindow.data.xml“) 二、与导出 XML有关的 DataWindow属性 数据窗口 XML相关属性决定了导出XML文档的相关形式,有以下属性:1、导出时候使用哪一个模板dw_1.Object.DataWindow.Export.XML.UseTemplate = “value“ 2、导出时候元数据的类型(MetaDataExternal!, M

11、etaDataInternal!),即 DTDSchema 是内签在导出 XML文件中,还是以单独的文件存在dw_1.Object.DataWindow.Export.XML.MetaDataType = “value“ 3、 导出时候那种元数据的将被同时保存(XMLDTD!, XMLSchema!, XMLNone! ) 注: DTD和 XML Schema 都用来定义 XML 中数据表示的语法格式。dw_1.Object.DataWindow.Export.XML.SaveMetaData = “value“ 4、导出时候 XML header data 在 detail rows 中是否

12、重复 (类似于按 header data 分组) dw_1.Object.DataWindow.Export.XML.HeadGroups = “value“ 5、导出文件是否允许空白(white space )存在dw_1.Object.DataWindow.Export.XML.IncludeWhiteSpace = “value“ 四、导入 XML 一、导入 XML方法(Importing XML) 符合格式的 XML数据可以导入到 DataWindow或者 DataStore 中,具体方 法如下:1、从 XML文件中导入 dw_1.ImportFile( XML!, “c:foobar

13、.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是否格式良好( well formed)和符合特定语法( complies with a specified grammar) 可以在导入之前使用 XMLParseFile 、 XMLParseString 方法来判断 XML 是否 well formed。long ll_ret ll_ret = XMLParseFile(“c:tempmydoc.xml“) if ll_ret = 0 then dw_1.ImportFile(“c:tempmydoc.xml“)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号