版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PBDOM操作XML文档轻松入门(Easy XML with PowerBuilder Document Object Model)PBDOM操作XML文档轻松入门(Easy XML with PowerBuilder Document Object Model)(作者:Terry Voth、JohnStrano)(根据 翻译整理)本文对PBDOM技术进行相关介绍,但并不涉及XML的基础知识,建议阅读者对下述相关术语有一定了解:Document(文档), DTD(文档类型定义), schema(大纲),Element(元素), attribute(属性), processing instruc
2、tion(处理命令), entity(实体)。本文主要包括以下内容:1、为什么要使用PBDOM以及怎样创建PBDOM2、PBDOM主要用于那些地方3、如何使用PBDOM编程4、PBDOM和其他XML解析(parser)技术的比较一、什么是DOM文档对象模型(Document Object Model)1、作为一项W3C规范,XML DOM存在目的是为不同类型的应用程序提供一个标准的编程接口,它被设计可以跨平台、跨语言使用。2、我们可以利用XML DOM创建XML文档并操纵其结构,增加、修改、删除元素。3、程序中调用XML解析器载入XML文档到内存中。当文档被载入后,可以通过进入DOM检索和操作
3、相关信息。4、DOM 保存了XML文档树,文档(document)元素位于整棵树的最顶层。该元素可以有一到多个子节点来保存树的结构。可以参阅以下网站: 来了解更多的关于XML Document Object Model的内容。二、什么时候应该使用DOM工具当你需要做下列事情的时候,你应该想到XML DOM的1、在一个或者多个XML文档之间移动元素2、创建新的元素并且在XML文档的任意位置插入3、操作元素并重新插入其到XML文档其他位置4、导入内嵌数据结构& . pb9中,数据窗口现在可以通过XML导出内嵌数据结构(nested data structures).三、什么是PBDOMPo
4、werBuilder 文档结构模型(PowerBuilder Document Object Model)1、PBDOM是通过PBNI扩展出来的,用于操作XML数据,并针对PowerScript作了优化2、在程序中模型是通过DOM的抽象来表示XML数据。(A programming model to represent XML data an abstraction of DOM)3、底层是对Apache Xerces/C+的封装。四、PBDOM的设计目标1、简单易用(Be straightforward for PowerBuilder programmers)2、可以利用PowerScri
5、pt的强大语言能力(如对象、方法重载、数据等)3、在可能的情况下,隐藏了XML底层的复杂实现(Hide the complexities of XML wherever possible)4、原有的DOM在pb下使用不够直观(DOM is unintuitive to a PowerBuilder programmer) 五、使用PBDOM初步PBDOM设置1、添加pbdom90.pbd(%SYBASE%/Shared/PowerBuilder)到工程的pbl列表中2、%SYBASE%/Shared/PowerBuilder应该在系统路径或者应用程序的路径中(也就是pbdom要使用此路径下的p
6、bdom90.dll, pbxerces90.dll、xerces_2_1_0.dll文件,同样,当程序发布时候也需要)六、PBDOM类的使用如图所示,反映了PBDOM类的组成和继承关系,可以看到,几乎所有的PBDOM类都继承自PBDOM_Object(除了PBDOM_Builder和PBDOM_Exception)1、PBDOM_Document构建PBDOM举例1.1 直接构建(XML documents can be created from scratch)PBDOM_Document docPBDOM_Element rootdoc = CREATE PBDOM_Documentro
7、ot = CREATE PBDOM_Elementroot.SetName( "root" )root.SetText( "this is the root" )doc.AddContent( root )1.2 从文件、字符串、DataStore中载入PBDOM_Builder builderdoc = builder.BuildFromString( "<foo>bar</foo>" )doc = builder.BuildFromFile( "c:/foo/bar.xml"doc =
8、builder.BuildFromDataStore( l_ds)2、PBDOM_Element2.1 遍历元素PBDOM_Element root, children, first/ Get the root element of the documentroot = doc.GetRootElement()/ Get an array of all child elementsroot.GetChildElements( children )/ Get only elements with a given nameroot.GetChildElements( "name"
9、;, children )/ Get the first element with a given namefirst = root.GetChildElement( "name" )注意:上例中得到的元素数组是联动的!(The element array is live!) 即: 修改数组中的元素,同样会作用到父文档 返回的数组是有界的(Once the array is returned, it is now bounded) 在数组中增加新元素时,需要一个SetContent()方法调用2.2 移动元素/ PBDOM_Document docOne,docTwoPBD
10、OM_Element movablemovable = CREATE PBDOM_ElementMovable.SetName( "movable" )docOne.AddContent( movable ) / addmovable.Detach() / removedocTwo.addContent( movable ) / add again注意:1、只要是从PBDOM_Object继承的对象,都可以调用Detach()方法(如Comments、ProcessingInstructions、Elements (and their content)等等)2、PBDOM元
11、素对象不是永久的捆绑在它的父文档上的(PBDOM elements aren't permanently tied to their parent document)2.3 符合规格(Always well-formed)PBDOM_Element构造器以及setter方法会检查元素是否符合规格:elem.SetName( "Spaces are illegal" )AddContent()方法也会从以下几个方面进行检查: 结构-树中没有循环(Structure no loops in any tree) 只有一个根节点元素(One and only one roo
12、t element) 相容的命名空间(Consistent namespaces)3、PBDOM_Attribute3.1 操作元素属性 元素可以有多个属性<table width="100%" border="0"></table>/ Get an attributels_width = table.GetAttributeValue( "width" ) / orls_width = table.GetAttribute ( "width" ).GetText()/ Attributes
13、 can be typedli_border = table.GetAttribute( "width" ).GetIntValue()/ Set an attributetable.SetAttribute( "cellspacing", "0" )/ Remove an attributetable.RemoveAttribute( "cellspacing" )/ Remove all attributesPBDOM_Attribute emptytable.SetAttributes( empty ) /
14、the PowerScript way4、PBDOM_Text4.1 操作元素文本内容<description>cool demo</description>/ the text is directly available returns/ "rncool demorn"ls_desc= elem.GetText()/ two convenience methodsls_desc= elem.GetTextTrim()/ returns "cool demo"ls_desc = elem.GetTextNormalize()/ r
15、eturns "cool demo"/ text can be changed directlyelem.SetText( "a new description" )5、PBDOM_Object5.1 操作有混合内容的元素<description><!comment -><?convert units="metric" ?>cool demo</description>PBDOM_Object contentdesc.GetContent( content )FOR i = 1 TO U
16、pperBound( content )CHOOSE contenti.GetObjectClassString()CASE "pbdom_comment"/ .CASE "pbdom_processinginstruction"/ .END CHOOSENEXT6、PBDOM_ProcessingInstruction6.1 使用处理命令(Processing instructions)<? xml-stylesheet type="text/xsl"href="foo.xsl" _fcksavedurl=
17、""foo.xsl"" ?>-target- -data-/ Get target (e.g., "xsl-stylesheet")ls_target = pi.GetTarget()/ Get data (e.g., 'type="text/xsl"href="foo.xsl"')ls_data = pi.GetText()/ Get individual values as attributesString namespi.GetNames( names )FOR i
18、= 1 TO UpperBound( names )MessageBox( namesi, pi.GetValue( namesi )NEXT7、PBDOM and 命名空间(Namespaces)<xsl:stylesheet version="1.0" xmlns:xsl="/1999/XSL/Transform"><xsl:variable name="ffsection" select="/SITE_SECTION<xsl:template name="TopNav">.</xsl:template></xsl:stylesheet>String ls_elementPBDOM_Element template/ get element name and namespace return "xsl:template"template = root.GetChil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脑出血的内科护理查房
- 结膜炎治疗及预防
- 老师的感谢信模板汇编6篇
- 2022校园防溺水安全教育主题班会方案5篇
- 我的理想演讲稿(15篇)
- 变形记学生读书心得总结13篇
- 律师事务所实习报告锦集七篇
- 暑假安全教育主题班会家长会80
- 旅游类实习报告范文合集七篇
- 赶海儿歌课件
- 教科版2022-2023学年度上学期三年级科学上册期末测试卷及答案(含八套题)
- 国家开放大学电大《11662会计信息系统(本)》期末终考题库及标准参考答案
- DZ/T 0430-2023 固体矿产资源储量核实报告编写规范(正式版)
- 浙西南红军歌曲赏析智慧树知到期末考试答案章节答案2024年丽水学院
- 教科版小学科学二年级上册教案(全册)教学设计
- 2024年考研管理类联考综合能力真题及答案
- 第四届华师杯五年级语文学科竞赛试卷
- 汽车维修行业二级维护进厂及过程检验单
- VDA63过程审核案例
- 龙岩地表水环境
- 生产线平衡实验
评论
0/150
提交评论