整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          JavaScript中裝載XML文檔

          JavaScript中裝載XML文檔

          E和FierFox瀏覽器對于這裝載同域的XML文件和裝載XML字符串這兩種情況,分別有各自的處理方式。IE的解析器支持XML文件和XML字符串的加載,而火狐瀏覽器使用單獨的解析器把XML載入內存,然后轉換為可通過JS訪問的XML DOM對象。

          以下是js代碼:

          /* 
           * 封裝IE和Firefox類瀏覽器中裝載同域XML或XML字符串的方法,
           * @param flag true表示裝載XML的文件,false表示裝載XML的字符串
           * @param xmldoc flag為true表示XML文件的路徑,flag為false表示XML字符串
           */
           
          function loadXML(flag,xmldoc){
           if(window.activeXObject) {
           //IE瀏覽器
           //創(chuàng)建空的XML對象
           var activexName=["MSXML2.DOMDdcument","Miscrosoft.XmlDom"];
           var xmlObj;
           for(var i=0; i < actviexName.length;i++){
           try{
           xmlObj=new ActiveXObject(activeName[i]);
           break;
           }catch(e){
           
           }
           }
           if(xmlObj){
           //同步方式裝載XML數據,確保在文檔完全加載之前解析器不會繼續(xù)腳本的執(zhí)行
           xmlObj.async=false;
           if(flag){
           //load用于加載文件,loadXML用于加載字符串
           //裝載XML文件
           xmlObj.load(xmldoc);
           }else{
           //裝載XML的字符串
           xmlObj.loadXML(xmldoc);
           }
           //返回根節(jié)點
           return xmlObj;
           //返回根元素節(jié)點
           return xmlObj.documentElement;
           }else{
           alert("裝載XML文檔的對象創(chuàng)建失敗");
           return null;
           }
           }else if(document.implementation.creatDocument){
           //針對Firefox類瀏覽器
           var xmlObj;
           if(flag){
           //裝載XML文件
           //先創(chuàng)建一個空的xml dom對象
           xmlObj=document.implementation.creatDocument("","",null);
           if(xmlObj){
           //同步方式進行裝載
           xmlObj.async=false;
           xmlObj.load(xmldoc);
           return xmlObj.documentElement;
           }else{
           alert("裝載XML文檔的對象創(chuàng)建失敗");
           return null;
           }
           }else{
           //裝載XML的字符串
           //創(chuàng)建一個dom解析器
           xmlObj=new DOMParser();
           //把xml字符串解析成要返回的dom對象
           var docRoot=xmlObj.parerFromString(xmldoc,"test/xml");
           return docRoot.documentElement;
           }
           }
           alert("裝載XML文檔的對象創(chuàng)建失敗");
           return null;
          }
          

          html代碼

          <html>
           <head>
           <title>TODO supply a title</title>
           <meta charset="UTF-8">
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <script type="text/javascript" src="load.js"></script>
           <script type="text/javascript">
           function test(){
           //裝載同域的XML文件
           var domxml1=loadXML(true,"test.xml");
           //裝載XML字符串
           var domxml2=loadXML(true,"<xml>123</xml>");
           alert("");
           }
           </script>
           </head>
           <body>
           <input type="button" value="test" onclick="test()"/>
           </body>
          </html>
          

          XML頁內容

          <?xml version="1.0" encoding="UTF-8"?>
          <root>
           木子松就是我,我就是木子松
          </root>
          

          總結

          對于裝載同域的XML文件,IE瀏覽器和火狐類瀏覽器都是先創(chuàng)建一個空的XML文檔對象,然后用“xmlDoc.load(“**.xml”)”告知解析器加載名為**.xml的XML文檔

          對于裝載XML字符串,IE瀏覽器和裝載XML文件的方式一樣,利用微軟內建的解析器加載XML字符串;而火狐類瀏覽器,則是通過"var parser=new DOMParser()"創(chuàng)建dom解析器,然后利用方法parserFromString()加載 XML字符串。另外DOMParser對象的load()方法可用于加載文件。

          跨域訪問處于安全方面的原因,現在的瀏覽器不允許跨域訪問。如果想跨域訪問,則必須把XML文件放到自己的服務器上,否則,xmlDoc.load()將產生錯誤“Access is denied”。

          分享成果,隨喜正能量】行走于塵世,繁忙的工作節(jié)奏,沉重的生活壓力,似乎想讓生活過得行云流水,真的不是一件容易的事情,那么何不讓它變得簡單一些?或許我們不夠時尚,至少我們可以簡約,或許我們不夠精致,至少我們可以簡潔。把每一段旅途,都當做最好的修行;把每一段旅途遇到的困難,都當做自己的助力;把每一段旅途中遇到的人,都當做今生的因緣。

          《VBA信息獲取與處理》教程是我推出第六套教程,目前已經是第一版修訂了。這套教程定位于最高級,是學完初級,中級后的教程。這部教程給大家講解的內容有:跨應用程序信息獲得、隨機信息的利用、電子郵件的發(fā)送、VBA互聯網數據抓取、VBA延時操作,剪貼板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定制工作表信息函數等等內容。程序文件通過32位和64位兩種OFFICE系統(tǒng)測試。是非常抽象的,更具研究的價值。

          教程共兩冊,八十四講。今日的內容是專題六“VBA中利用XMLHTTP完成網抓數據”的第1講:XMLHTTP的簡單講解

          第一節(jié) XMLHTTP的簡單講解及相關概念的介紹

          現在的社會是網絡的社會,離開了網絡,很多工作會變得不通暢。我們日常的生活也是和網絡緊密聯系一起的,那么網絡是如何搭建的呢?我們可以通過本講的講解了解到HTTP 超文本傳輸協(xié)議,TCP/IP的介紹,XMLHTTP的介紹,等等。

          1 什么是XMLHTTP,它是用來做什么的?

          1) XML的介紹 XML指可擴展標記語言(EXtensible Markup Language),設計宗旨是傳輸數據,是W3C (萬維網聯盟World Wide Web Consortium)的推薦標準。XML 是各種應用程序之間進行數據傳輸的最常用的工具,并且在信息存儲和描述領域變得越來越流行。

          2) HTTP的介紹 HTTP 超文本傳輸協(xié)議(HyperText Transfer Protocol,超文本傳輸協(xié)議)是因特網上應用最為廣泛的一種網絡傳輸協(xié)議,所有的WWW文件都必須遵守這個標準。

          HTTP是一個基于TCP/IP通信協(xié)議來傳遞數據(HTML 文件, 圖片文件, 查詢結果等)。

          3) TCP/IP的介紹 TCP/IP是供已連接因特網的計算機進行通信的通信協(xié)議(Transmission Control Protocol / Internet Protocol)。定義了電子設備(比如計算機)如何連入因特網,以及數據如何在它們之間傳輸的標準。

          TCP 用于應用程序之間的通信。當應用程序希望通過 TCP 與另一個應用程序通信時,它會發(fā)送一個通信請求。這個請求必須被送到一個確切的地址。在雙方“握手”之后,TCP 將在兩個應用程序之間建立一個全雙工 (full-duplex) 的通信。這個全雙工的通信將占用兩個計算機之間的通信線路,直到它被一方或雙方關閉為止。

          IP 用于計算機之間的通信。IP 是無連接的通信協(xié)議。它不會占用兩個正在通信的計算機之間的通信線路。這樣,IP 就降低了對網絡線路的需求。每條線可以同時滿足許多不同的計算機之間的通信需要。通過 IP,消息(或者其他數據)被分割為小的獨立的包,并通過因特網在計算機之間傳送。IP 負責將每個包路由至它的目的地。

          TCP/IP協(xié)議意味著 TCP 和 IP 在一起協(xié)同工作。TCP 負責應用軟件(比如你的瀏覽器)和網絡軟件之間的通信。IP 負責計算機之間的通信。TCP 負責將數據分割并裝入 IP 包,然后在它們到達的時候重新組合它們。IP 負責將包發(fā)送至接受者。

          4) XMLHTTP的介紹 XMLHTTP是一套可以在Javascript、VbScript、Jscript等腳本語言中通過http協(xié)議傳送或從接收XML及其他數據的一套API。XmlHttp最大的用處是可以更新網頁的部分內容而不需要刷新整個頁面。

          來自MSDN的解釋:XmlHttp提供客戶端同http服務器通訊的協(xié)議。客戶端可以通過XmlHttp對象(MSXML2.XMLHTTP.3.0)向http服務器發(fā)送請求并使用微軟XML文檔對象模型Microsoft? XML Document Object Model (DOM)處理回應。

          現在的絕對多數瀏覽器都增加了對XmlHttp的支持,IE中使用ActiveXObject方式創(chuàng)建XmlHttp對象,其他瀏覽器如:Firefox、Opera等通過window.XMLHttpRequest來創(chuàng)建xmlhttp對象.

          2 應用XMLHTTP抓取數據的步驟

          1)創(chuàng)建XMLHTTP對象 //需MSXML4.0支持

          2)打開與服務端的連接,同時定義指令發(fā)送方式,服務網頁(URL)和請求權限等。客戶端通過Open命令打開與服務端的服務網頁的連接。與普通HTTP指令傳送一樣,可以用"GET"方法或"POST"方法指向服務端的服務網頁。 

          3)發(fā)送指令。 

          4)等待并接收服務端返回的處理結果。 

          5)釋放XMLHTTP對象

          3 XMLHTTP的屬性及方法

          1) XMLHTTP的常見屬性: 

          onreadystatechange:在同步執(zhí)行方式下獲得返回結果的事件句柄。只能在DOM中調用。 

          responseBody:   結果返回為無符號整數數組。 

          responseStream:  結果返回為IStream流。 

          responseText:   結果返回為字符串。 

          responseXML:   結果返回為XML格式數據。

          2) XMLHTTP的常用方法: 

          ① Open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)創(chuàng)建一個新的http請求,并指定此請求的方法、URL以及驗證信息(用戶名/密碼)打開指定網址

          bstrMethod:  數據傳送方式,即GET或POST。 

          bstrUrl:    服務網頁的URL。 

          varAsync:   是否同步執(zhí)行。缺省為True,即同步執(zhí)行,但只能在DOM中實施同步執(zhí)行。用中一般將其置為False,即異步執(zhí)行。 

          bstrUser:    用戶名,可省略。 

          bstrPassword:用戶口令,可省略。 

          setRequestHeader(bstrHeader, bstrvalue)

          bstrHeader:HTTP 頭(header) 

          bstrvalue: HTTP 頭(header)的值 

          如果Open方法定義為POST,可以定義表單方式上傳: 

          xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") 

          ② Send(varBody)發(fā)送請求到http服務器并接收回應

          varBody:指令集。可以是XML格式數據,也可以是字符串,流,或者一個無符號整數數組。也可以省略,讓指令通過Open方法的URL參數代入。

          ③ abort 取消當前請求

          ④ getAllResponseHeaders 獲取響應的所有http頭

          ⑤ getResponseHeader 從響應信息中獲取指定的http頭

          以上我給出了一些常用的屬性和方法,其他的大家可以參考相關的資料,或許我在今后的課程中會用到時講解。同時我們還要主要下面的注意點:

          1、ResponseBody是二進制的數據,是服務器傳來的沒有經過任何加工的數據。

          2 ResponseText是按照utf-8編碼把ResponseBody轉換而成,也就是:ResponseText=ByteToStr(ResponseBody,"UTF-8")

          本節(jié)知識點回向:了解一些概念,HTTP,TCP/IP,XMLHTTP,以及XMLHTTP的常用屬性和方法。

          我20多年的VBA實踐經驗,全部濃縮在下面的各個教程中,教程學習順序:

          現代網絡技術的世界中,XML(可擴展標記語言)和 HTML(超文本標記語言) 是兩個非常重要的技術。盡管它們都使用標簽和屬性的格式來描述數據,但它們在形式和用途上有顯著的區(qū)別。

          概述

          什么是 XML?

          XML,即 Extensible Markup Language(可擴展標記語言),是一種用于存儲和傳輸數據的文本格式。XML 的設計宗旨是強調數據的結構化和準確性,提供了一種公認的標準格式。最主要的特點是它的自我描述性,即數據和數據的定義集成在一起,使得它在數據交換和數據存儲方面具有極大優(yōu)勢。

          • 什么是 XML?基礎入門介紹

          什么是 HTML?

          而 HTML,即 HyperText Markup Language(超文本標記語言),則是一種用于創(chuàng)建網頁的標準標記語言。HTML 的主要用途是描述網頁的內容和結構,通過與 CSS(層疊樣式表)和 JavaScript(腳本語言)的結合,實現豐富和互動的網絡應用。

          區(qū)別詳解

          用途

          • XML:主要用作數據存儲和數據交換的格式。通常用于各類應用程序之間的數據傳遞。例如,網絡服務(Web Services)中,SOAP(簡單對象訪問協(xié)議)使用 XML 格式來封裝消息內容。(SOAP 協(xié)議詳解:什么是 SOAP 以及它如何工作?)
          • HTML:主要用于展示數據和內容。HTML 文檔定義了網頁的結構,它和瀏覽器一起使得用戶可以在互聯網上瀏覽各種信息和資源。

          結構和特性

          XML:

          1. 自定義標簽:XML 允許用戶自定義標簽,這是它最大的特性之一。通過自定義標簽,數據可以更加準確地描述和組織。
          2. 嚴格的語法要求:每一個開始標簽都必須有一個閉合標簽,標簽必須正確嵌套,同時所有屬性必須用引號括起來。
          3. 數據中心:XML 集中在描述和傳輸數據,而不是顯示數據的外觀。
          <book>
              <title>Learning XML</title>
              <author>John Doe</author>
              <price>29.99</price>
          </book>
          

          HTML:

          1. 預定義標簽:HTML 提供了很多預定義標簽,用于構建和格式化網頁內容。不允許用戶自定義標簽。
          2. 寬松的語法要求:雖然 HTML5 強調標簽的閉合,但瀏覽器會容錯,對一些語法錯誤進行修正。
          3. 展示中心:HTML 的主要目的是展示數據,定義網頁的內容和結構,包括文本、圖片、視頻等。
          <!DOCTYPE html>
          <html>
          <head>
              <title>My Web Page</title>
          </head>
          <body>
              <h1>Welcome to My Web Page</h1>
              <p>This is an introductory paragraph.</p>
          </body>
          </html>
          

          數據驗證

          • XML:XML 支持數據驗證。可以使用 DTD(文檔類型定義)或者 XML Schema 來定義和驗證 XML 數據的結構和內容,使得數據更加精確和可靠。
          • HTML:HTML 沒有原生的數據驗證功能,它更多關注于瀏覽器如何解釋和顯示頁面。對于用戶提交的數據,可以通過表單驗證和 JavaScript 來進行驗證和處理。

          可擴展性和標準化

          • XML:XML 是完全可擴展的。由于沒有預定義的標簽,用戶可以根據需要創(chuàng)建適合自己應用的標簽集。這使得 XML 非常靈活,可以適應不同的應用和需求。
          • HTML:HTML 是沒有可擴展性的,它的標簽集是由 W3C(萬維網聯盟)規(guī)定的標準。不允許用戶隨意添加新的標簽,但它提供了一些擴展機制,例如使用自定義數據屬性(data-* 屬性)。

          處理工具

          • XML:加工和處理 XML 數據的工具和接口非常多,包括 SAX(Simple API for XML)、DOM(Document Object Model)、XPath 和 XSLT 等。它們?yōu)樽x取、操作和轉換 XML 數據提供了豐富的支持。
          • HTML:HTML 的處理主要依賴于瀏覽器和各種網頁開發(fā)技術,比如 JavaScript、CSS、DOM 操作等,以實現動態(tài)和交互式網頁內容。

          如何調試 XML、JSON 格式的請求

          下面使用 Apifox 來修正和測試基于 XML 的 API 請求。

          創(chuàng)建與測試 XML 請求

          假設您需要向服務器發(fā)送 XML 格式的注冊信息。您可以按照以下步驟使用 Apifox 進行設置:

          • 請求類型:POST
          • 請求 URL(需替換為有效地址):http://127.0.0.1:8000/register
          • 請求頭設置:Content-Type: application/xml
          • 請求體內容如下:
          <userRegistration>
              <username>john_doe</username>
              <password>securePassword123</password>
              <email>john_doe@example.com</email>
          </userRegistration>
          
          • 響應體示例:
          <userRegistrationResponse>
              <userId>12345</userId>
              <username>john_dane</username>
              <status>success</status>
          </userRegistrationResponse>
          

          在 Apifox 中配置您的請求

          打開 Apifox,選擇開始新項目或者繼續(xù)現有項目。接著點擊“新建接口”,在接口設置頁面,選擇 POST 作為請求方法,并輸入正確的請求 URL,比如 https://api.example.com/register (這里的 URL 應替換為真實可用的 URL)。在配置請求體時,選擇 XML 格式,并將上述 XML 數據粘貼到配置區(qū)。

          發(fā)起請求并觀察結果

          配置完成后,轉到“運行測試”頁面,點擊“發(fā)送”按鈕以向服務器發(fā)送構建的請求。請求發(fā)送后,檢查響應部分,您應該看到類似于提供的 XML 格式的響應數據。

          您還可以使用響應界面上的預覽功能,該功能能讓您以更直觀的方式查看服務器返回的數據。

          總結

          XML 和 HTML 雖然在標簽和屬性的語法上有所相似,但它們在使用場景、結構和功能上有顯著的區(qū)別。XML 強調數據的準確傳輸和結構化存儲,適合用于數據的交換和持久化存儲等場景。而 HTML 強調內容呈現和用戶交互,主要用于網頁設計和開發(fā)。


          主站蜘蛛池模板: 精品免费AV一区二区三区| 中文字幕av无码一区二区三区电影| 无码少妇一区二区三区| 无码精品人妻一区二区三区人妻斩| 久久精品免费一区二区喷潮| 精品无码人妻一区二区三区品| 亚洲av无码不卡一区二区三区| 亚洲一区综合在线播放| 亚洲AV无码一区二区三区牛牛| 亚洲AV无码一区二区三区久久精品| 国产伦精品一区二区三区免费下载| 亚洲一区二区三区高清不卡| 国产精品亚洲一区二区三区| 国产一区二区三区国产精品| 亚洲AV无码一区二区二三区入口| 亚洲一区精品视频在线| 国产成人精品一区二区三区| 污污内射在线观看一区二区少妇| 国产一区二区草草影院| 无码日韩人妻av一区免费| 国产成人片视频一区二区| 国产精品成人免费一区二区| 亚洲色欲一区二区三区在线观看| 春暖花开亚洲性无区一区二区| 亚洲国产国产综合一区首页| 精品日韩在线视频一区二区三区 | 亚洲高清偷拍一区二区三区| 亚洲成在人天堂一区二区| 杨幂AV污网站在线一区二区| 国精产品999一区二区三区有限 | 精品一区二区三区在线观看l | 怡红院美国分院一区二区| 精品国产免费一区二区三区| 欧美成人aaa片一区国产精品 | 亚洲色偷偷偷网站色偷一区| 国产午夜精品一区二区三区小说| 成人毛片一区二区| 日韩在线一区视频| 国产一区高清视频| 中文无码AV一区二区三区| 中文字幕一区二区三区永久|