XML语言.doc_第1页
XML语言.doc_第2页
XML语言.doc_第3页
XML语言.doc_第4页
XML语言.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

childNodes是XML的物件屬性, 比如:testXYZ那form跟item就是childNode,因為這是ole物件,就算宣告也只能宣告為variant,所以就省了.我是用excel的visual basic編輯器來測試,這樣在區域變數視窗內就可以看到物件的詳細資料似乎會造成XML無法被程式讀取. midonxmlItem.NODENAME就是建檔人員,xmlItem.nodeTypedValue就是midon另外Set xmlDc = xmlFile.childNodes.Item(n).childNodes 文件集合裡的n不一定是填2,因為我的XML檔案裡,我要抓的值是在2的地方,你的XML檔案不可能跟我的一樣,所以建議你到Excel的VB編輯器去測試,可以找到你要的區域變數.midonmidontesttest上面這個例子,跟都是childnode,所以要抓db裡的資料要就要Set xmlDc = xmlFile.childNodes.Item(1).childNodes 文件集合非常感謝您的回覆,但仍有問題想請幫忙, 請問開啟下列xml檔案時出現錯誤訊息:無法顯示 XML 網頁 無法使用 樣式表檢視 XML 輸入。請更正錯誤,然後按 重新整理按鈕,或者稍後再試一次。 -文字內容包含無效的字元。處理資源 file:/C:/DXL/aaa.xml 發生錯誤。 此資料是擷取於前述政府公文網站.請問要如何才能正常開啟呢?另請問前述例子Set xmlDc = xmlFile.childNodes.Item(1).childNodes 文件集合請問.item(1)是指一整段嗎?那麼在下例分段點是怎麼分呢?函.di!DOCTYPE 函SYSTEM 91_2.dtd 行政院研究發展考核委員會341000000A台北市中正區濟南路一段二之二號六樓聯絡人:戴慧明電子信箱:.tw聯絡電話:二二三四一九六六轉八二一傳真電話:二二三九七九九九縣政府中華民國九十一年九月十八日會訊檢送本會年月份現有乙份,請查照。依本會年月日會議決議辦理。承辦人:。縣政府縣政府工務局本會資訊管理處不含附件行政院研究發展考核委員會分頁(1)而您的例子似乎是將整段資料抓下來於Notes文件中,請問可以by欄位將各nodeTypedValue 置於Notes 欄位嗎? 謝謝!1.= 2.=!DOCTYPE 函SYSTEM 91_2.dtd 3.=行政院研究發展考核委員會341000000A台北市中正區濟南路一段二之二號六樓聯絡人:戴慧明電子信箱:.tw聯絡電話:二二三四一九六六轉八二一傳真電話:二二三九七九九九縣政府中華民國九十一年九月十八日會訊檢送本會年月份現有乙份,請查照。依本會年月日會議決議辦理。承辦人:。縣政府縣政府工務局本會資訊管理處不含附件行政院研究發展考核委員會-你的XML檔有問題,我稍微修改了一下放到附加檔.主要是上面第2段的地方有問題我把他刪掉,還有TAG開始跟結束不一致產生的問題.Set xmlDc = xmlFile.childNodes.Item(2).childNodes 文件集合這一行應該拆成3行如下-set tmp1=xmlFile.childNodesset tmp2=tmp1.Item(2)set xmlDc=tmp2.childNodes-xmlFile指的就是XML檔,上面我將你的XML內容分成3段,這3段就是set tmp2=tmp1.Item(2)裡的item,第一段是0,第二段是1,因為資料再第三段所以設2.但是item並不是直接在xmlFile物件的property,而是xmlFile.childNodes的property,所以要取得item要先取得xmlFile的childNodes.tmp2代表的是.這個TAG. 裡面也是階層式結構,要取下一層就用同樣的方法.每一層的取法其實只有2行,-set tmp1=xmlFile.childNodesset tmp2=tmp1.Item(2)-只要重複這2行,變數改一下,就可以一層一層解下去.我給的例子就是by欄位將各nodeTypedValue 置於Notes 欄位,不過只有3層架構,我自己把xmlDc定義成是Notesdocumentcollection層級的東西.(定義tmp2是Notesdocumentcollection也許會比較清楚一點,因為是自己定義,所以我定義成我覺得比較省事的方法)第2層是Notesdocument,第3層就是Notesitem,不過你的這個XML檔多了2層,且有一些重複的TAG,就看你自己怎樣規劃去解到notes裡.謝謝您的回覆,不過因為自己也不懂如何分層,所以目前可能無法採用此方式.不曉得您是從哪裡學到這些,因為我在designer help 中並沒有看到相關內容. 我暫時可能採取將xml資料全部轉成文字於1個Notes欄位中,再用LotusScript慢慢去拆解.謝謝您大力協助,非常感激!不用那麼客氣, 最後還是沒幫上你的忙.notes Designer在打開套表後,下面的程式設計師窗格左邊的視窗上方有一個參考的標籤,進去之後在Lotus Script的選項點一下,選OLE CLASS,就有一些支援OLE的程式的CLASS表,接著就是憑經驗了(講難聽一點就是用猜的:p)找好想要的,就到EXCEL VB編輯器裡測試.Excel VB編輯器裡也是可以查到這些Class,可是既沒說明又很亂,不過Excel VB編輯器的區域變數視窗很好用,可以很清楚看到執行中OLE物件的架構.所以我習慣在notes裡查.再到EXCEL測試.OLE物件的應用應該是有專門的地方可以學吧,只是我是用土法煉鋼的方式.慢慢測出來的.我用的是Microsoft XML 3.0的物件, 而他用的是Microsoft XML version2.0.OLE CLASS裡面的用法說明是這樣Selectnodes(byval querystring as string)是用一個搜尋字串querystring去取得childnodes,querystring只是作者自訂的字串,沒有什麼太大的意義.其他的用法就跟我po的差不會太多,只是要get的物件屬性不同而已.請原諒我又來問您了,因為對這一段有點疑問,這個迴圈是做什麼用的? 一般不是會指定Notes欄位名稱,然後將值放進去嗎?如Dim item As NotesItem.set value of doc.Set item = doc.ReplaceItemValue _(EstimatedCost, Too much )-For y = 0 To xmlDoc.Length - 1 欄位Set xmlItem= xmlDoc.Item(y) If xmlItem.Attributes.Length 0 Then docNum= xmlItem.Attributes.Item(0).nodeTypedValue Call doc1.replaceItemValue( xmlItem.NODENAME , xmlItem.nodeTypedValue) Next 欄位For y = 0 To xmlDoc.Length - 1 欄位 Set xmlItem= xmlDoc.Item(y) If xmlItem.Attributes.Length 0 Then docNum= xmlItem.Attributes.Item(0).nodeTypedValue Call doc1.replaceItemValue( xmlItem.NODENAME , xmlItem.nodeTypedValue) Next 欄位-這一段中,xmlDoc就相當於notesdocument,xmlItem就相當於notesitem,=If xmlItem.Attributes.Length 0 Then docNum= xmlItem.Attributes.Item(0).nodeTypedValue -這行是判斷tag裡的屬性值,例如testxmlItem.Attributes.Length就是1,因為tag裡只有no=1這個屬性,那麼xmlItem.Attributes.Item(0).nodeTypedValue就是1-testxmlItem.Attributes.Length就是2,因為tag裡有2個屬性,那麼xmlItem.Attributes.Item(1).nodeTypedValue就是12=Call doc1.replaceItemValue( xmlItem.NODENAME , xmlItem.nodeTypedValue) -例如test123這行就是在notesdocument裡新增一個欄位叫item1,欄位值是test123最近剛好在弄XML轉檔到Notes的程式, 我是用Microsoft XML V3.0作為Notes的OLE物件來解析XML檔案,若要debug最好修改一下在EXCEL裡測試,再修改後放到notes的agent裡執行,Sub Initialize dim ws as New NotesUIWorkspacedim s as new notessessionset db=s.currentdatabase Set xmlFile= CreateObject(msxml2.domdocument.3.0)tmpStr = ws.OpenFileDialog( True , 選擇檔案 , XML 檔案|*.xml , C:dxl,*.xml)If Not Isarray(tmpstr) Then Exit SubFor h=0 To Ubound(tmpStr)If xmlFile.Load(tmpStr(h) Then Set xmlDc = xmlFile.childNodes.Item(2).childNodes 文件集合For x = 0 To xmlDc.Length - 1 文件Set xmlDoc = xmlDc.Item(x).childNodesSet doc1=db.Createdocument()doc1.form=testXML For y = 0 To xmlDoc.Length - 1 欄位Set xmlItem= xmlDoc.Item(y) If xmlItem.Attributes.Length 0 Then docNum= xmlItem.Attributes.Item(0).nodeTypedValue檢查TAG中的設定值Call doc1.replaceItemValue( xmlItem.NODENAME , xmlItem.nodeTypedValue) Next 欄位Call doc1.save(False,True) Next 文件Kill tmpStr(h)End IfNext End Sub作 用 传回指定名称的元素集合。 基本语法 objNodeList xmlDocument.getElementsByTagName(tagname); 说 明 tagname 是一个字符串,代表找到的元素卷标名称。使用tagname *传回文件中所有找到的元素。 范 例 objNodeList xmlDoc.getElementsByTagName(*); alert(objNodeList.item(1).xml); getElementsByTagName的用法 New Document function ck() var aa = document.getElementsByTagName(input); var ss = ; alert(网页里所有的input集合共有:+aa.length+个!); for (var i=0; iaa.length; i+) if (aa.type=text)ss=ss+aa.value+; alert(ss); ss.value=sss; alert(ss.value); var bb = ss.split() ; bb.value=wewwew; alert(bb); alert(bb.length); The following code fragment displays the value of all elements in books.xml:下面的代码片断将获取“books.xml”文件中所有的元素值:xmlDoc=loadXMLDoc(books.xml);var x=xmlDoc.getElementsByTagName(title);for (i=0;ix.length;i+) document.write(xi.childNodes0.nodeValue) document.write() Output:输出结果:Everyday ItalianHarry PotterXQuery Kick StartLearning XMLVisualBasic,C#,C+ 以下範例會取得及顯示所有的書名。VisualBasic,C#,C+ 注意這個範例示範如何使用 GetElementsByTagName 的其中一個多載版本。如需其他可以使用的範例,請參閱個別的多載主題。VisualBasic Imports SystemImports System.IOImports System.Xmlpublic class Sample public shared sub Main() Dim doc as XmlDocument = new XmlDocument() doc.Load(2books.xml) Get and display all the book titles. Dim root as XmlElement = doc.DocumentElement Dim elemList as XmlNodeList = root.GetElementsByTagName(title) Dim i as integer for i=0 to elemList.Count-1 Console.WriteLine(elemList.ItemOf(i).InnerXml) next end subend classC# using System;using System.IO;using System.Xml;public class Sample public static void Main() XmlDocument doc = new XmlDocument(); doc.Load(2books.xml); / Get and display all the book titles. XmlElement root = doc.DocumentElement; XmlNodeList elemList = root.GetElementsByTagName(title); for (int i=0; i elemList.Count; i+) Console.WriteLine(elemListi.InnerXml); C+ #using #using using namespace System;using namespace System:IO;using namespace System:Xml;int main() XmlDocument* doc = new XmlDocument(); doc-Load(S2books.xml); / Get and display all the book titles. XmlElement* root = doc-DocumentElement; XmlNodeList* elemList = root-GetElementsByTagName(Stitle); for (int i=0; i Count; i+) Console:WriteLine(elemList-ItemOfi-InnerXml); 這個範例使用 2books.xml 檔案做為輸入。 The Handmaids Tale 19.95 Pride And Prejudice 24.95 JScript 沒有可供 JScript 使用的範例。若要檢視 Visual Basic、C# 或 C+ 範例,請按一下畫面左上角的 語言篩選條件 按鈕 。作者:佚名文章来源:网络1.文档对象模型(DOM)DOM是HTML和XML文档的编程基础,它定义了处理执行文档的途径。编程者可以使用DOM增加文档、定位文档结构、填加修改删除文档元素。W3C的重要目标是把利用DOM提供一个使用于多个平台的编程接口。W3C DOM被设计成适合多个平台,可使用任意编程语言实现的方法。2.节点接口XML parser用来装载XML文档到缓存中,文档装载时,可以使用DOM进行检索和处理。DOM采用树形结构表示 XML文档,文档元素是树的最高阶层,该元素有一个或多个孩子节点用来表示树的分枝。节点接口程序通常用来读和写XML节点树中的个别元素,文档元素的孩子节点属性可以用来构造个别元素节点。XML parser用来证明Web中的DOM支持遍历节点树的所有函数,并可通过它们访问节点和及其属性、插入删除节点、转换节点树到XML中。所有Microsoft XML parser函数得到W3C XML DOM的正式推荐,除了load和loadXML函数(正式的DOM不包括标准函数loading XML文档)。有13个节点类型被Microsoft XML parser支持,下面列出常用节点:节点类型例子 Document type Processing instruction ElementCarlsberg Attributetype=beer TextCarlsberg 3.使用XML parser为了更加熟练的处理XML文档,必须使用XML parser。Microsoft XML parser是IIS5.0所带的一个COM组件,一旦安装了IIS5.0,parser可以利用HTML文档和ASP文件中的脚本。Microsoft XMLDOM parser支持以下编程模式:-支持 javascript, VBScript, Perl, VB, Java, C+ 等等 -支持 W3C XML 1.0 和 XML DOM -支持 DTD 和 validation 如果使用IE5.0中的javascript,可以使用下面的XML文档对象:var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)如果使用VBScript,可以使用下面的XML文档对象:set xmlDoc = CreateObject(Microsoft.XMLDOM)如果使用ASP,可以使用下面的XML文档对象:set xmlDoc = Server.CreateObject(Microsoft.XMLDOM)4.装载一个XML文件到parser中下面的代码装载存在的XML文档进入XML parser:var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(note.xml)/ . processing the document goes here第一行脚本增加了一个Microsoft XML parser实例,第三行装载名为”note.xml”的XML文档进入parser中。第二行保证文档装载完成以后parser进行下一步工作。5. parseError对象打开XMl文档时,XML Parser产生错误代码,并存在parseError对象中,包括错误代码、错误文本和错误行号,等信息。6.文件错误下面的例子将试图装载一个不存在的文件,然后产生相应的错误代码:var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(ksdjf.xml)document.write(Error Code: )document.write(xmlDoc.parseError.errorCode)document.write(Error Reason: )document.write(xmlDoc.parseError.reason)document.write(Error Line: )document.write(xmlDoc.parseError.line)7.XML错误下面使用不正确的格式装载XMl文档,var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(note_error.xml)document.write(Error Code: )document.write(xmlDoc.parseError.errorCode)document.write(Error Reason: )document.write(xmlDoc.parseError.reason)document.write(Error Line: )document.write(xmlDoc.parseError.line)8. parseError属性属性描述:errorCode 返回长整型错误代码reason返回字符串型错误原因line返回长整型错误行号linePos返回长整型错误行号位置srcText返回字符串型产生错误原因url 返回url装载文档指针filePos返回长整型错误文件位置9.遍历节点树一种通用的析取XML文档的方法是遍历节点树和它的元素值。下面是使用VBScript写的遍历节点树的程序代码:set xmlDoc=CreateObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(note.xml)for each x in xmlDoc.documentElement.childNodesdocument.write(x.nodename)document.write(: )document.write(x.text)next10.为XML文件提供HTML格式XML的一个优点是把HTML文档和它的数据分离开。通过使用浏览器中的XML parser,HTML页面可以被构造成静态文档,通过javascript提供动态数据。下面的例子使用javascript读取XML文档,写XML数据成HTML元素:var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(note.xml)nodes = xmlDoc.documentElement.childNodesto.innerText = nodes.item(0).textfrom.innerText = nodes.item(1).textheader.innerText = nodes.item(2).textbody.innerText = nodes.item(3).text11.通过名称访问XML元素下面的例子使用javascript读取XML文档,写XML数据成HTML元素:var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(note.xml)document.write(xmlDoc.getElementsByTagName(from).item(0).text)12.装载纯XML文本进入parser 下面的代码装载文本字符串进入XML parser :var text=text=text+ToveJanitext=text+Remindertext=text+Dont forget me this weekend!text=text+var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.loadXML(text)/ . processing the document goes here13.装载XML进入Parser var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(note.xml)document.write(The first XML element in the file contains: )document.write(xmlDoc.documentElement.childNodes.item(0).text)遍历XML节点树:txt=Traversing the node treedocument.write(txt)set xmlDoc=CreateObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(note.xml)for each x in xmlDoc.documentElement.childNodesdocument.write( & x.nodename & )document.write(: )document.write(x.text)document.write()next装载XML 进入 HTML var xmlDoc = new ActiveXObject(Microsoft.XMLDOM)xmlDoc.async=falsexmlDoc.load(note.xml)nodes = xmlDoc.documentElement.childNodesto.innerText = nodes.item(0).textfrom.innerText = nodes.item(1).textheader.innerText = nodes.item(2).textbody.innerText = nodes.item(3).textHTML using XML dataRefsnes Data Internal NoteTo: From: etElementByID getElementsByName getElementsByTagName的区别和总结 +js+Mxl+xmlhttp etElementByID getElementsByName getElementsByTagName的区别和总结 WEB标准下可以通过getElementById(), getElementsByName(), and getElementsByTagName()访问DOCUMENT中的任一个标签:1、getElementById()getElementById()可以访问DOCUMENT中的某一特定元素,顾名思义,就是通过ID来取得元素,所以只能访问设置了ID的元素。比如说有

温馨提示

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

评论

0/150

提交评论