PBDOM操作XML文檔輕松入門_第1頁
PBDOM操作XML文檔輕松入門_第2頁
PBDOM操作XML文檔輕松入門_第3頁
PBDOM操作XML文檔輕松入門_第4頁
PBDOM操作XML文檔輕松入門_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、PBDOM操作XML文檔輕松入門(Easy XML with PowerBuilder Document Object Model)PBDOM操作XML文檔輕松入門(Easy XML with PowerBuilder Document Object Model)(作者:Terry Voth、JohnStrano)(根據(jù) 翻譯整理)本文對PBDOM技術(shù)進(jìn)行相關(guān)介紹,但并不涉及XML的基礎(chǔ)知識,建議閱讀者對下述相關(guān)術(shù)語有一定了解:Document(文檔), DTD(文檔類型定義), schema(大綱),Element(元素), attribute(屬性), processing instruc

2、tion(處理命令), entity(實(shí)體)。本文主要包括以下內(nèi)容:1、為什么要使用PBDOM以及怎樣創(chuàng)建PBDOM2、PBDOM主要用于那些地方3、如何使用PBDOM編程4、PBDOM和其他XML解析(parser)技術(shù)的比較一、什么是DOM文檔對象模型(Document Object Model)1、作為一項(xiàng)W3C規(guī)范,XML DOM存在目的是為不同類型的應(yīng)用程序提供一個標(biāo)準(zhǔn)的編程接口,它被設(shè)計可以跨平臺、跨語言使用。2、我們可以利用XML DOM創(chuàng)建XML文檔并操縱其結(jié)構(gòu),增加、修改、刪除元素。3、程序中調(diào)用XML解析器載入XML文檔到內(nèi)存中。當(dāng)文檔被載入后,可以通過進(jìn)入DOM檢索和操作

3、相關(guān)信息。4、DOM 保存了XML文檔樹,文檔(document)元素位于整棵樹的最頂層。該元素可以有一到多個子節(jié)點(diǎn)來保存樹的結(jié)構(gòu)??梢詤㈤喴韵戮W(wǎng)站: 來了解更多的關(guān)于XML Document Object Model的內(nèi)容。二、什么時候應(yīng)該使用DOM工具當(dāng)你需要做下列事情的時候,你應(yīng)該想到XML DOM的1、在一個或者多個XML文檔之間移動元素2、創(chuàng)建新的元素并且在XML文檔的任意位置插入3、操作元素并重新插入其到XML文檔其他位置4、導(dǎo)入內(nèi)嵌數(shù)據(jù)結(jié)構(gòu)& . pb9中,數(shù)據(jù)窗口現(xiàn)在可以通過XML導(dǎo)出內(nèi)嵌數(shù)據(jù)結(jié)構(gòu)(nested data structures).三、什么是PBDOMPo

4、werBuilder 文檔結(jié)構(gòu)模型(PowerBuilder Document Object Model)1、PBDOM是通過PBNI擴(kuò)展出來的,用于操作XML數(shù)據(jù),并針對PowerScript作了優(yōu)化2、在程序中模型是通過DOM的抽象來表示XML數(shù)據(jù)。(A programming model to represent XML data an abstraction of DOM)3、底層是對Apache Xerces/C+的封裝。四、PBDOM的設(shè)計目標(biāo)1、簡單易用(Be straightforward for PowerBuilder programmers)2、可以利用PowerScri

5、pt的強(qiáng)大語言能力(如對象、方法重載、數(shù)據(jù)等)3、在可能的情況下,隱藏了XML底層的復(fù)雜實(shí)現(xiàn)(Hide the complexities of XML wherever possible)4、原有的DOM在pb下使用不夠直觀(DOM is unintuitive to a PowerBuilder programmer) 五、使用PBDOM初步PBDOM設(shè)置1、添加pbdom90.pbd(%SYBASE%/Shared/PowerBuilder)到工程的pbl列表中2、%SYBASE%/Shared/PowerBuilder應(yīng)該在系統(tǒng)路徑或者應(yīng)用程序的路徑中(也就是pbdom要使用此路徑下的p

6、bdom90.dll, pbxerces90.dll、xerces_2_1_0.dll文件,同樣,當(dāng)程序發(fā)布時候也需要)六、PBDOM類的使用如圖所示,反映了PBDOM類的組成和繼承關(guān)系,可以看到,幾乎所有的PBDOM類都繼承自PBDOM_Object(除了PBDOM_Builder和PBDOM_Exception)1、PBDOM_Document構(gòu)建PBDOM舉例1.1 直接構(gòu)建(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" )注意:上例中得到的元素數(shù)組是聯(lián)動的?。═he element array is live!) 即: 修改數(shù)組中的元素,同樣會作用到父文檔 返回的數(shù)組是有界的(Once the array is returned, it is now bounded) 在數(shù)組中增加新元素時,需要一個SetContent()方法調(diào)用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繼承的對象,都可以調(diào)用Detach()方法(如Comments、ProcessingInstructions、Elements (and their content)等等)2、PBDOM元

11、素對象不是永久的捆綁在它的父文檔上的(PBDOM elements aren't permanently tied to their parent document)2.3 符合規(guī)格(Always well-formed)PBDOM_Element構(gòu)造器以及setter方法會檢查元素是否符合規(guī)格:elem.SetName( "Spaces are illegal" )AddContent()方法也會從以下幾個方面進(jìn)行檢查: 結(jié)構(gòu)-樹中沒有循環(huán)(Structure no loops in any tree) 只有一個根節(jié)點(diǎn)元素(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 操作元素文本內(nèi)容<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 操作有混合內(nèi)容的元素<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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論