日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SAP UI5 应用的 OData 元数据请求响应的解析原理分析

發布時間:2023/12/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP UI5 应用的 OData 元数据请求响应的解析原理分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前一篇文章 SAP UI5 應用的 OData 元數據請求的發送原理分析我們學習了 SAP UI5 應用是如何自動發送 OData 元數據的 HTTP 請求。

本文繼續學習該元數據請求的響應到達客戶端之后,SAP UI5 框架是如何解析的。

當響應成功到達客戶端后,回調函數被觸發:

如果 xhr.readyState 不為 4,則直接返回。

metadata 請求的響應頭部,Content-Type 為 application/xml:

構造 response 對象:

其中 xml 元數據的內容,存儲在 xhr.responseText 內部。

因為 statusCode 為 200,進入 success 回調函數:

因為 response.data 為空,因此調用對應的 handle 去讀取:

首先取得 content-type:

從 response header 字段里讀取 Content-Type 字段:

使用;作為分隔符:

使用分隔處理后的第一個元素作為結果:

我們自己構造的 response 對象的 body 字段,來自 xhr 標準對象的 responseText:

根據 media type 里存儲的類型來獲取對應的 handler?

handler 的 accept 字段必須包含 media type 里指定的類型:

如果 handler 驗證通過,創建讀寫上下文對象:

if (handlerAccepts(handler, cType)) {var readContext = createReadWriteContext(cType, version, context, handler);readContext.response = response;response.data = parseCallback(handler, body, readContext);return response.data !== undefined;}

這里很有意思,contentType 為 Application/xml,但是 formatQueryString 卻是 json 格式:

然后基于 handler 和 response 進行解析,將結果存儲到 response 對象的 data 字段里。

xml Metadata 的解析器:metadataParser:

var metadataParser = function (handler, text) {/// <summary>Parses a metadata document.</summary>/// <param name="handler">This handler.</param>/// <param name="text" type="String">Metadata text.</param>/// <returns>An object representation of the conceptual model.</returns>var doc = xmlParse(text);var root = xmlFirstChildElement(doc);return parseConceptualModelElement(root) || undefined;};

進入 xmlParse 方法:可以看到里面使用的是 DOMParser:

DOMParser 可以將存儲在字符串中的 XML 或 HTML 源代碼解析為一個 DOM Document。

注意:XMLHttpRequest 支持從URL可尋址資源解析XML和HTML,在其response 屬性中返回Document。

更多Jerry的原創文章,盡在:“汪子熙”:

總結

以上是生活随笔為你收集整理的SAP UI5 应用的 OData 元数据请求响应的解析原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。