整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          軟件測試學習筆記丨接口請求體-xml

          文轉自測試人社區(qū),原文鏈接:jck28-lucio-接口請求體-xml - 學習筆記 - 測試人社區(qū)

          XML 簡介

          • 是 eXtensible Markup Language 的縮寫
          • 是 可擴展標記語言,類似 HTML
          • 是用來傳輸和存儲數(shù)據(jù)
          • 是通過 < > 標簽來描述信息
          • 是 W3C 的推薦標準
          <?xml version="1.0"?>
          <study>
              <course>
                  <name>JUnit5測試框架</name>
                  <school>Hogwarts</school>
              </course>
          
              <course>
                  <name>接口自動化測試</name>
                  <school>Hogwarts</school>
              </course>
          </study>

          XML 請求

          • 構建 XML 請求體
            • 外部 XML 文件
            • 字符串

          XML 請求

          • 外部 XML 文件
          <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
              <Body>
                  <Add xmlns="http://tempuri.org/">
                      <intA>1</intA>
                      <intB>1</intB>
                  </Add>
              </Body>
          </Envelope>

          XML 請求

          import static io.restassured.RestAssured.*;
          import org.junit.jupiter.api.Test;
          
          import org.apache.commons.io.IOUtils;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.IOException;
          
          
          public class TestXML {
              @Test
              void testSoapApi() throws IOException {
          
                  // 定義請求體數(shù)據(jù):源自文件對象
                  File file = new File("src/test/resources/add.xml");
                  FileInputStream fis = new FileInputStream(file);
                  String reqBody = IOUtils.toString(fis, "UTF-8");
          
                  given()
                          .contentType("text/xml")  // 定制請求內容媒體類型
                          .body(reqBody)  // 定制請求體數(shù)據(jù)
                          .log().headers()  // 打印請求頭信息
                          .log().body()  // 打印請求體信息
                  .when()
                          .post("http://dneonline.com//calculator.asmx")  // 發(fā)送請求
                  .then()
                          .statusCode(200);  // 響應狀態(tài)碼斷言
              }
          }
          附錄:IOUtils 依賴配置
          在 pom.xml中添加配置信息
          <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
            <scope>test</scope>
          </dependency>

          軟件測試開發(fā)免費視頻教程分享 - 公眾號 - 測試人社區(qū)


          ML;
          是什么?
          Extensible Markup Languare 可擴展標記型語言

          為什么要有XML?
          1.HTML的標簽是固定的,不可以改變,也不可以進行一個···擴展
          2.HTML語法松散

          作用;
          制作配置文件;如組件類。。。。。
          存儲數(shù)據(jù);存儲少量的數(shù)據(jù)

          ◆◆◆注;XML不是HTML的升級版,因為應用的領域不一樣。
          XML是描寫關系型的數(shù)據(jù)
          HTML是描述頁面的數(shù)據(jù)顯示效果

          --------------------------------------------XML和HTML的區(qū)別--------------------------------------------------------------------

          XML和HTML的區(qū)別;
          A、HTML是將數(shù)據(jù)和顯示的效果混合在一起,描述了數(shù)據(jù)的顯示效果,
          -----而且標簽是固定,而且語法松散

          B、XML是將數(shù)據(jù)和顯示的效果是分離的,只是描述了數(shù)據(jù)之間的關系和存儲的格式,
          -----沒有描述數(shù)據(jù)的顯示效果,沒有一套具體的標簽,只是一個規(guī)范。

          XML適用金融,科學等有關系型的領域

          XML的重點是;處理數(shù)據(jù),和數(shù)據(jù)結構


          ◆注;引入外部CSS文件,對XML標簽進行一個修飾,
          <>xml-stylesheet tyep = "text/css" href = "">

          --------------------------------------------XML的特點--------------------------------------------------------------------

          XML特點;
          1.語法嚴謹,區(qū)分大小寫
          2.標簽名可以是中文
          3.文件后綴是 .xml
          4.換行也是算一個元素
          5.可以自定義標簽
          6.id不可以以數(shù)字開頭

          存儲數(shù)據(jù)的方式;
          * XML 存儲關系型的數(shù)據(jù)
          * properties 存儲key,value的數(shù)據(jù)
          * 文本 什么都可以存儲
          * 數(shù)據(jù)庫



          --------------------------------------------XML的語法--------------------------------------------------------------------




          XML語法;
          1.文檔聲明 Document declaration;
          版本 編碼集 是否與其他文件關聯(lián)
          <?xml vaersion = "1.0" encoding = "編碼集" standalone = "no默認" ?>

          2.元素 Element;
          1.自定義標簽;建議標簽名全部小寫,保持與HTML的書寫習慣,
          因為出現(xiàn)同名的大小寫不便于閱讀
          2.成對出現(xiàn)
          3.閉合標簽和結束體標簽
          4.符合邏輯嵌套

          3.屬性 Attribute;
          1.屬性名小寫,屬性也是可以自定義的,
          2.屬性值要使用 "" 或 '',id不可以以數(shù)字開頭
          3.多個屬性要使用 空格 隔開
          4.可以將屬性作為一個子標簽,因為XML用途不是用于顯示頁面的

          4.注釋 Comment;
          1.<!-- --> 和HTML一樣
          2.注釋不可以嵌套

          5.CDATA;
          1.XML的轉義字符基本和HTML一致。
          2.如果需要轉義的字符太多了則可以使 CDATA
          3.CDATA可以將一段字符串原樣的輸出

          <![CDATA[字符串]]>

          6.處理指令;
          1.處理指令時告知解析引擎是要如何處理文檔的。
          2.處理指令必須使用 <? ?>

          <?xml-stylesheet type = "text/css" href = "路徑">

          ◆注;
          1.XML必須要有一個根節(jié)點
          2.XML不會在頁面顯示
          3.縮進寫法適合閱讀

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓XML—— 文件結構↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          ◆◆◆注; XML文檔必須要有一個根節(jié)點◆◆◆

          XML文件結構;
          Node
          |--- Element
          |--- Attr
          |--- Comment
          |--- Text
          |--- Document


          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓XML—— 解析技術↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


          xml解析;
          為什么要有?
          因為XML主要是用于存儲數(shù)據(jù),做配置文件.......
          那么XML的數(shù)據(jù)的···取出···可以通過解析技術可以實現(xiàn).....

          而讀取XML文件;
          1.IO ---- 讀取出來的數(shù)據(jù)不是理想的數(shù)據(jù)。
          2.DOM解析 ---- DOM4J 是一個開源的解析技術
          3.SAX解析 ---- SAX 是SUN公司定義的,比較規(guī)范,SAX里面也是有使用了DOM4J的技術

          解析技術;
          1.DOM4J 是一個開源組織的
          2.JAXP 是SUN公司定義的
          |-- DOM
          |-- SAX


          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓DOM—— 解析技術↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          DOM解析;
          特點;1.是一次性裝載這個文件到內存中,不利于大文件存取操作,
          2.適合增刪改查,因為一次是整個文件加載,無需在到硬盤對文件中的內容一個一個去查找
          3.在內存中是一棵倒掛的樹
          4.DOM是解析XML的底層接口之一
          5.是W3C定義的
          6.DOM是一個規(guī)范,而DOM4J是一個實現(xiàn)了這個規(guī)范的解析技術

          DOM4J;
          1.是DOM解析的一個實現(xiàn)解析技術(如同實現(xiàn)類)
          2.特點和DOM一樣,也是一棵倒立的樹型形狀。
          3.不是W3C定義的,是一個開源團隊發(fā)布的

          DOM4J;也是一個組件,而這個組件也是需要下載的,

          -----------------------------------------------DOM4J獲取XML文件的方式--------------------------------------------------------------------

          ◆◆◆注;注意導包的路徑。

          DOM4J獲取文件的三種方式;
          1.通過解析器的方法傳入一個絕對路徑

          a.創(chuàng)建解析器
          ★ SAXReader sr = new SAXReader();

          b.調用解析器的read方法獲取XML文檔,使用文檔對象接收

          ★ Document doc = sr.read("絕對路徑");

          2.通過解析器的方法傳入一個相對路徑

          a.創(chuàng)建解析器
          ★ SAXReader sr = new SAXReader();

          b.調用解析器的read()方法,獲取到XML文檔,使用文檔對象接收

          ★ Document doc = sr.read("相對路徑");

          3.通過類的getResourceAsStream("/文件名")方法

          a.通過運行時類的對象的getResourceAsStream()的方法
          ---獲取到這個XML文檔的流

          ★InputStream is = 類名.class.getResourceStream("/文件名");

          b.創(chuàng)建解析器
          ★ SAXReader sr = new SAXReader();

          c.調用解析器的read()方法傳入獲取到的XML文件流,使用文檔對象接收

          ★ Document doc = sr.read(is);

          ------------------------------------------DOM4J獲取XML文件的元素方法--------------------------------------------------------------------

          ◆◆◆注;必須要先獲取到根節(jié)點,在根據(jù)根節(jié)點獲取到其他節(jié)點 ◆◆◆

          DOM4J獲取元素方法; --- 使用Element Object調用

          1.getRootElement() 獲取到根節(jié)點

          2.elements(寫/沒寫) 只能寫子標簽,不可以寫孫標簽
          沒寫;獲取到所有的子標簽標簽 返回的是一個集合
          寫了;獲取到指定標簽名的所有標簽

          3.getName(); 獲取到標簽名
          4.elementText() 獲取到標簽的內容
          5.element() 獲取到指定標簽
          6.elementById() 獲取到指定的Id標簽
          7.elementIterator() 獲取到標簽迭代器
          8.getQName() 獲取到標簽名

          獲取屬性的方法;----使用 Element Object調用

          1.attributeValue() 獲取到指定的屬性的值
          2.attirbutes() 獲取到所有的屬性

          添加的方法;----使用 Element Object 調用

          1.addElement() 添加元素
          2.addAttribute() 添加屬性
          3.addCDATA() 添加CDATA
          4.addText() 添加標簽內容

          直接刪除元素方法;使用獲取到的元素對象,
          ◆ 調用detach()方法可以刪除這個元素和這個元素的所有子元素。

          如;element.detach()

          ------------------------------------------DOM4J刷新文件--------------------------------------------------------------------

          DOM4J刷新文件;
          1.聲明文件內容的寫入格式。
          a.縮進格式;
          OutputFormat of = OutputFormat.createPrettyPrint();

          b.行內格式;
          OutputFormat of = OutputFormat.createCompactFormat();

          2.創(chuàng)建寫入器
          XMLWriter writer = new XMLWriter("FileStream_Path","OutputFormat_Obj");

          3.調用寫入器的方法寫入重寫寫入文件
          writer.write("Document_Obj");

          ◆注;
          1.將獲取到的XML文檔對象的內容轉換成一個字符串
          String Document.asXML();

          2.將字符串轉換成一個XML文檔對象
          Document.DocumentHanper.parseText("String_Obj");

          ------------------------------------------DOM4J創(chuàng)建 --> 寫入過程--------------------------------------------------------------------

          ◆◆◆注意導包◆◆◆

          1.創(chuàng)建解析器對象;
          SAXReader reader = new SAXReader()

          2.調用解析器方法獲取到XML文檔;
          Document doc = reader.read("String_Path");

          3.獲取到根路徑;
          Element doc.getRootElement();

          ---4.1;將獲取到的文檔對象轉換成字符串
          String doc.asXML();

          ---4.2;將字符串解析成一個XML文檔對象
          Document DocumnetHanper.parseText("String");

          5.規(guī)定寫入XML文件的格式;
          1.OutputFormat of = OutputFormat.createPattryPrint(); --- 縮進格式
          2.OutputFormat of = OutputFormat.createCompactFormat(); --- 行內格式

          6.創(chuàng)建寫入器;
          XMLWriter writer = new XMLWriter("FileStream_Path",OutputFormat);

          7.調用寫入器的寫入XML文件的方法;
          writer.wirte(Document);

          8.關閉流;
          writer.close();

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓Xpath—— 查詢表達式↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          Xpath;
          為什么要有?
          在DOM4J中加載文件時,直接加載整個文件到內存中的,不便于獲取某一個指定的節(jié)點。

          什么是Xpath?
          1、是一個查詢表達式語言,也是一個開源的語言
          2、在DOM4J中融合了這個Xpath這個查詢表達式語言
          3、這個語言也是一個組件來的,但是在DOM4J組件中已經附帶了
          dom4J --- lib --- jaxen-1.1-beta-6.jar

          作用;
          可以通過Xpath表達式快速定位到某一個XML文件的節(jié)點。

          ------------------------------------------Xpath—— 表達式符號 --------------------------------------------------------------------

          表達式符號;
          //x 相對定位到某節(jié)點
          /x 絕對定位絕對定位到某一個節(jié)點
          /* 是所有節(jié)點
          [num] 第N個節(jié)點
          [@x] 選中到某一個屬性
          normalize-span 去空格
          [text()] 獲取到內容

          ------------------------------------------Xpath—— 使用 --------------------------------------------------------------------

          Xpath的使用;
          DOM4J的selectNodes("表達式"); 方法
          DOM4J的selectSingleNode("表達式"); 方法

          Document .selectNodes() ------ 是返回所有節(jié)點的集合
          Document .selectSingleNode("表達式") ----- 返回某一個具體的節(jié)點

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP —— 解析技術↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          JAXP解析技術;
          是Sun公司開發(fā)的,是XML文檔解析技術的一個集合統(tǒng)稱。

          包含;
          DOM解析
          一次性讀取整個文件到內存中。

          SAX解析
          讀取一行,解析一行,處理一行。

          這2項解析技術都是由SUN公司制定的,較規(guī)范

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP——SAX —— 解析技術↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          SAX解析技術;
          為什么要有?
          1.DOM4J不適合大文件的讀取,因為一次性加載整個文件。

          是什么?
          1.Simple API For XML 簡單的解析XML文檔API,是由SUN公司定義的一個解析技術,較規(guī)范。
          2.也是融合了DOM4J的部分技術。

          作用;
          用于解析XML文檔的一個解析技術

          特點;
          一次讀取一行,解析一行,處理一行。

          適合大文件的存取,不適合增刪改查。

          ◆注;由于是SUN公司開發(fā)的,而在Eclipse或MyEclipse中已經有了組件。

          ◆◆◆◆◆注;SAX解析主要是用于查詢,一般都不使用寫入操作,因為一般的XML文件都不會太大

          -----------------------------------------SAX獲取XML文件的方式--------------------------------------------------------------------


          SAX獲取XML文件的方式;
          只有 2 種,傳入的字符串是···絕對路徑···或···相對路徑···

          -----------------------------------------SAX獲取XML文件的流程 --------------------------------------------------------------------

          SAX獲取XML文件的流程;
          因為是SUN公司定義的所以也較規(guī)范,也定義了獲取XML文件的流程

          1.獲取到解析器工廠對象
          SAXParserFactory spf = SAXParserFactory.newInstance();

          2.通過解析器工廠對象獲取到具體的解析器對象
          SAXParser sp = spf.newSAXParser();

          3.通過具體的解析器對象,獲取到讀取器
          XMLReader reader = sp.getXMLReader()

          4.通過調用讀取器的setContentHandler(obj)方法設置事件處理
          reader.setContentHandler(obj);

          5.調用讀取器的解析方法,解析XML文件
          reader.parse("絕對路徑/相對路徑");


          ◆注;具體的事件處理在繼承事件處理接口·下·的具體實現(xiàn)類,的類中定義

          事件處理;
          在SAX中引入了一個事件處理的概念,是用于對文件的內容進行的處理。

          1.在調用解析文件parse()的方法,時會觸發(fā)事件處理方法中的對象的···主要三個方法···

          2.而事件處理ContenHandler是一個接口,
          如果實現(xiàn)這個了接口則需要實現(xiàn)這個接口的所有方法
          所以可以實現(xiàn)這個接口的具體的實現(xiàn)類。

          主要三個方法;
          startElement(String uri, String localName, String qName,
          Attributes attributes) ----- 獲取到開始標簽

          characters(char[] ch, int start, int length) ----- 獲取到標簽內容

          endElement(String uri, String localName, String qName)
          ----- 獲取到結束標簽

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓JAXP——DOM —— 解析技術↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          JAXP-DOM解析技術;
          為什么要有?
          1.在SUN公司定義了一個SAX解析,而這個解析的特點是,每次讀取一行,
          而不便于增刪改。。。。。
          2.而不用DOM4J,因為如果是使用SUN公司定義的標準較規(guī)范,

          3.使得代碼便于閱讀,因為在閱讀是不必查看是使用什么技術。。。。。

          4.在未來的開發(fā)中統(tǒng)一使用SUN公司的技術,可以使得兼容性問題的風險降低。。

          是什么?
          JAXP-DOM解析技術是由SUN公司開發(fā)的,里面融合了DOM4J的部分技術

          作用;
          可以用于解析XML文檔。

          特點;
          1.一次性加載整個XML文檔到內存中。
          2.不適合大的文檔存取,適合增刪改查
          3.也是一個倒立的樹型結構。

          4.也是遵循DOM規(guī)范的。

          ------------------------------ JAXP——DOM —— 創(chuàng)建->獲取XML文檔流程 -------------------------------------------------------------------

          Jaxp-DOM創(chuàng)建流程;
          1.獲取到Jaxp_DOM解析工廠對象
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

          2.通過解析工廠對象獲取到具體的解析器對象
          DomcumentBuilder db = dbf.newDocumentBuilder();

          3.通過解析器的解析XML文檔的方法獲取到XML文檔
          Document doc = db.parse("絕對路徑/相對路徑")

          操作文檔元素的方法;
          參考;Java_API ---> Document對象,中的方法
          和DOM4J/SAX類似

          ◆◆◆注;不可以使用通過類名獲取到文件輸入流對象

          Node n = doc.getElementsByTagName("節(jié)點名")[num];

          -------------------------------- JAXP——DOM —— 創(chuàng)建->寫入XML文檔流程 --------------------------------------------------------------------

          JAXP-DOM創(chuàng)建-寫入;
          1.獲取到JAXP-DOM解析工廠接口對象
          DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

          2.通過解析工廠的對象獲取到具體的解析器對象
          DocumentBuilder bd = dbf.newDocumentBuilder();

          3.使用解析器對象的parse()方法,獲取到XML文檔的對象
          Document doc = bd.parse(絕對路徑/相對路徑);

          4.1.在JAXP-DOM的中加入了插入的insertBefore();的方法
          a.創(chuàng)建節(jié)點
          Element_Obj.createElement("結點名");

          b.獲取到參考節(jié)點

          c.獲取到某一個節(jié)點(父節(jié)點)
          Element ele = doc.getDocumentElement();

          d.通過父節(jié)點插入某一個節(jié)點
          ele.insertBefore(插入的節(jié)點,參考節(jié)點);

          5.創(chuàng)建寫入工廠對象 【transformer 轉換模型】
          TransformerFactory tff = TransformerFactory.newInstance();

          6.通過工廠對象獲取到具體的寫入對象
          Transformer tf = tff.newTransformer();

          <------
          7.調用寫入對象的write方法寫入
          ▲--> tf.write(new DOMSource("源文件路徑"),new StreamResult(new FileOutputStream("目標路徑")));


          ◆◆◆注;
          1.new DOMSource() 是一個類,而這個類可以關聯(lián)要轉換的Document對象
          2.new StreamResult() 是一個類,可以表示數(shù)據(jù)寫出的目的地。

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ XML —— 約束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          XML約束;
          為什么要有?
          在XML文檔中的標簽可以隨意定義,使得文檔不規(guī)范,
          也避免用戶輸入有誤,提高用戶的體驗性。

          如;在描述人職業(yè)的XML文檔中,用戶不小心寫錯了或有人故意破壞,寫了個動物標簽。


          什么是XML約束?
          規(guī)定(規(guī)范)XML文檔的書寫格式。

          作用;
          使得文檔變得規(guī)范,便于閱讀,提高用戶的體驗性。

          主流約束;
          DTD
          是一個控制不是很精準的一個約束技術
          文件后綴是 .dtd

          Scheme
          是一個控制精準的一個約束技術,逐步的取代DTD
          文件后綴是 .xsd

          ◆◆◆注;叫是叫Scheme而在書寫scheme約束文檔時是寫schema
          ----因為Schema的意思更加具體。

          schema :模式,計劃
          scheme :計劃,策劃,體制

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ DTD —— 約束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■


          DTD約束;
          是什么?
          Document Type Definition 文檔類型定義

          作用;
          用于規(guī)定(規(guī)范)一個XML文檔的書寫格式

          特點;
          對文檔的內容控制不夠精準是,如做不到內容的控制等。

          --------------------------------------------DTD文檔定義 --------------------------------------------------------------------


          DTD文檔定義;
          1.常用的數(shù)據(jù)類型;
          (#PCDATA) 可變長度的字符串
          EMPTY 空類型 【一般用于定義閉合標簽】
          ANY 任意類型

          2.常用的定義符號;
          ? 0或1
          + 1或N
          * 0或N
          () 必須出現(xiàn) 1次


          3.常用的定義元素的關鍵字;
          ELEMENT 定義元素
          ATTLIST 定義元素的屬性


          ◆注;
          1.都是大寫
          2.一個標簽名可以同時使用2個,
          因為;ELMENT是定義元素
          ATTLIST 是定義元素的屬性

          4.定義屬性常用的關鍵字;
          1.#REQUIRED 必須給這個標簽定義該屬性
          2.#IMPLIED 這個屬性可寫可不寫
          3.#Fixed 給這個屬性定義一個固定值

          --------------------------------------------DTD文檔引入方式 --------------------------------------------------------------------

          DTD文檔引入方式;
          1.外部引入;
          <!DOCTYPE 根名 SYSTEM "文件名">

          2.內部定義;
          <!DOCTYPE 根名[
          <!ELEMENT 根名(子標簽)>
          <!ELEMENT 子 (#PCDATA)>
          ]>

          3.外部引入;key --- value
          <!DOCTYPE 根名 PUBLIC "名稱空間【唯一】" "文件名">

          --------------------------------------------DTD文檔定義 --------------------------------------------------------------------


          1.文件后綴是DTD

          <!ELEMENT 書名 (作者+,價格?)>
          <!ElEMENT 作者 (#PCDATA)>
          <!ATTLIST 作者 titile CDATA #IMPLIED>
          <!ELEMENT 價格 (#PCDATA)>

          2.DTD文件沒有注釋

          ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■↓↓↓↓↓↓ Scheme —— 約束↓↓↓↓↓↓↓↓■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

          Scheme約束;
          為什么要有?
          1.DTD約束對XML的格式控制不夠精準
          2.使得用戶可選擇性更多,因為Scheme也比較麻煩


          是什么?
          Scheme;體制,策劃

          作用;
          規(guī)范(規(guī)定)XML的文檔書寫格式

          為什么說Scheme控制更加精準?
          1.可選擇規(guī)定的內容類型更多
          2.內容類型的控制
          3.內容的規(guī)定
          特點;
          1.文件后綴是.xsd
          2.scheme文件的也是屬于一個XML文件,因為聲明處與XML一樣
          3.文件的根節(jié)點一定是【schema】

          ◆◆◆注;不要寫成scheme ,
          scheme 是策劃,計劃,體制
          schema 是 計劃,模式

          --------------------------------------------Scheme文檔定義 --------------------------------------------------------------------


          Scheme文檔定義;
          1.可以指定一個自定義名

          2.xmlns 的W3C域名是固定的格式,不可以改變

          3.targetNamespace 域名名稱空間可以自定義,但是是要求唯一的

          4.elementFormDefault 是固定的格式

          5.根標簽一定要是 【schema】


          常用關鍵字解析;
          sequence 序列;
          是指定約束XML文件定義節(jié)點時
          按照一個什么順序進行一個定義

          complextype 復雜類型;
          是在xsd文檔聲明這個節(jié)點下有子節(jié)點。

          name;
          是標簽名
          type;
          是標簽內容類型

          ★注;type如果設置成數(shù)值型(double,decimal....)的,一般都是要顯示的賦值


          常見的單詞
          Ocuurs 重視的意思
          decimal 小數(shù)

          --------------------------------------------Scheme文檔開頭解析 --------------------------------------------------------------------

          xs是自定義的一個標識符
          名稱空間是一個key,保證唯一性用于約束XML文檔時,XML文檔找到這個文檔

          <?xml version = "1.0" encoding = "UTD-8"> ----- 指定文檔類型
          <xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema" ----- 固定的格式

          targetNamespace = "自定義" ----- 自定義域名,用于標識,
          |====一般是域名,保證在網絡上的唯一性

          elementFormDefault = "qualified" ----- 固定格式,qualified;合格
          >

          </xs:schema>

          ----------------------------------XML文檔 —— 引用 —— Scheme文檔 --------------------------------------------------------------------

          1.my ----- 是自定義的一個名字,可以用于在引入多個約束文件時,可以區(qū)分

          2.xis ----- 是自定義的,也是可以用于在引入多個約束文件時區(qū)分,

          3.xmlns:xis = "http://www.w3.org/2001/XMLSchema-instance"
          ----- 是固定格式

          4.xis:schemaLacation ----- 引入一個本地的文件,通過使用 名稱空間 + 文件名 指定 key + value

          <my:schema 【根名】 xmlns:my = "scheme文檔的名稱空間值"
          xmlns:xis = "http://www.w3.org/2001/XMLSchema-instance"
          xis:schemaLacation = "scheme文檔名稱空間 文件名"
          >

          </my:scheme>

          MLHttpRequest簡介

          XMLHttpRequest是由微軟提出的一個API接口,目的是為客戶端提供與服務器之間傳輸數(shù)據(jù)的功能。XMLHttpRequest的特點是可以按需請求、局部刷新,不僅提高了服務器響應速度還可以避免不必要的寬帶浪費。XMLHttpRequest提供了一個通過URL來獲取數(shù)據(jù)的簡單方式,通過它可以很容易的獲取到URL上所有類型的資源數(shù)據(jù)。

          XMLHttpRequest是什么

          XMLHttpRequest 是一個JavaScript對象,得到了所有現(xiàn)代瀏覽器(Chrom、IE7+、Firefox、Safari 以及 Opera等)較好的支持并內建了XMLHttpRequest 對象,它定義了很多方法和屬性方便用戶配置發(fā)送各種請求。比如說可以設置請求的超時時間、獲取請求進度信息、設置請求數(shù)據(jù)類型等,發(fā)送GET、POST、DELETE、HEAD、PUT等各種HTTP請求。

          XMLHttpRequest對象方法

          XMLHttpRequest對象創(chuàng)建可以通過new XMLHttpRequest()來實現(xiàn),一個請求的實現(xiàn)至少需要使用open和send方法的使用。XMLHttpRequest支持以下幾種方法,需要注意的是setRequestHeader()方法指定了HTTP請求的頭部信息,需要在請求初始化之后發(fā)送之前定義。

          XMLHttpRequest對象屬性

          onreadystatechange是一個事件句柄函數(shù),當readyState屬性發(fā)生變化時被調用以改變XMLHttpRequest 的狀態(tài)。我們可以通過獲取該對象的屬性來分析請求的狀態(tài)并做出相應的操作決策,也可以幫助開發(fā)者快速定位錯誤因素。

          XMLHttpRequest監(jiān)聽事件

          XMLHttpRequest對象提供了一系列監(jiān)聽事件來獲取請求的當前狀態(tài),每個請求都以loadstart事件開始,以 loadend 事件結束。在這兩個事件中間可以注冊響應的監(jiān)聽事件來獲取傳輸?shù)臓顟B(tài),比如通過onprogress獲取上傳文件的進度,那么我們就可以注冊一個onprogress 事件來監(jiān)聽當前進度。

          xhr.upload.onprogress = e =>{
            if (e.lengthComputable) {
              var progress = e.loaded / e.total;
            }
          }

          發(fā)送GET請求接收二進制數(shù)據(jù)

          這里我寫了一個簡單的頁面載入時發(fā)送一個請求的示例,通過GET方法來獲取后臺的文件。在發(fā)送請求時可以設置一些請求頭部信息,比如content-type、connection、cookie等信息。xhr提供了setRequestHeader來允許我們修改請求頭部信息,第一個參數(shù)為請求頭參數(shù),第二個參數(shù)為對應的參數(shù)值。我們還可以指定接受返回的數(shù)據(jù)類型,xhr可以通過responseType屬性指定數(shù)據(jù)類型為blob。老版本的 Internet Explorer不支持 XMLHttpRequest 對象,所以我們先檢查瀏覽器是否支持 XMLHttpRequest 對象,如果不支持的話可以創(chuàng)建 ActiveXObject 對象。

          發(fā)送POST請求上傳文件

          XMLHttpRequest新增formData對象,不僅可以發(fā)送文本數(shù)據(jù)還可以上傳文件。這里我嘗試實現(xiàn)文件上傳功能,將二進制文件追加到formData對象,在發(fā)送的時候我們將formData對象提交即可。


          主站蜘蛛池模板: 51视频国产精品一区二区| 国产成人精品亚洲一区| 精品三级AV无码一区| 精品女同一区二区三区在线| 国产激情一区二区三区四区| 无码精品黑人一区二区三区| 国产婷婷一区二区三区| 国产福利一区视频| 成人免费视频一区二区三区 | 亚洲一区在线视频| 国产亚洲一区二区三区在线观看| 国产一区在线视频观看| 国产乱码精品一区二区三区麻豆| 99精品一区二区免费视频| 久久精品一区二区国产| 国产在线观看一区精品| 一区二区三区免费视频播放器| 国内精品视频一区二区三区| 亚洲乱码av中文一区二区| 国产精品一区二区久久| tom影院亚洲国产一区二区| 3d动漫精品啪啪一区二区免费| 久久国产免费一区| 蜜桃视频一区二区三区在线观看| 99久久精品国产高清一区二区| 久久毛片免费看一区二区三区| 一区二区三区四区在线播放| 国产AV国片精品一区二区| 亚洲一区二区三区在线视频| 亚洲av成人一区二区三区在线观看| 日韩精品一区二三区中文 | 国模大尺度视频一区二区| 国产精品女同一区二区久久| 波多野结衣高清一区二区三区 | 老熟妇高潮一区二区三区| 日韩精品福利视频一区二区三区| 国产成人欧美一区二区三区| 国产乱码精品一区三上| 亚洲国模精品一区| 久久久久一区二区三区| 国内自拍视频一区二区三区|