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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

SAP UI5 应用的 OData XML 格式的元数据请求解析原理,基于 DOMParser

發(fā)布時間:2023/12/19 asp.net 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SAP UI5 应用的 OData XML 格式的元数据请求解析原理,基于 DOMParser 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前一篇文章SAP UI5 應用的 OData 元數(shù)據(jù)請求響應的解析原理分析我們介紹了 SAP UI5 OData 元數(shù)據(jù)解析的入口。本文繼續(xù)介紹基于 DOMParser 的 XML 數(shù)據(jù)解析原理。

入口如下:

var xmlParse = function (text) {/// <summary>Returns an XML DOM document from the specified text.</summary>/// <param name="text" type="String">Document text.</param>/// <returns>XML DOM document.</returns>/// <remarks>This function will throw an exception in case of a parse error.</remarks>var domParser = window.DOMParser && new window.DOMParser();var dom;if (!domParser) {dom = msXmlParse(text);if (!dom) {xmlThrowParserError("XML DOM parser not supported");}return dom;}

dom = domParser.parseFromString(text, “text/xml”); 這是一個原生方法調用。

成功解析出的 dom 元素對象:

下面開始遍歷這個 dom 對象:

拿到第一個元素:

遞歸操作:

解析成功的 metadata:

解析出的 entityType:

解析成功的元數(shù)據(jù),存儲在 response.data 里:

觸發(fā) metadata 加載成功的 callback:

ODataMetadata.prototype._handleLoaded = function(oMetadata, mParams, bSuppressEvents) {var aEntitySets = [];this.oMetadata = this.oMetadata ? this.merge(this.oMetadata, oMetadata, aEntitySets) : oMetadata;this.oRequestHandle = null;mParams.entitySets = aEntitySets;// resolve global promisesthis.fnResolve(mParams);if (this.bAsync && !bSuppressEvents) {this.fireLoaded(this);

拋出 loaded 事件:

該事件的參數(shù)為 metadata 的 json 對象格式和 xml 文本:

OData 元數(shù)據(jù)就緒后,執(zhí)行初始化操作:

ODataModel.prototype.initialize = function() {// Call initialize on all bindings in case metadata was not available when they were createdvar aBindings = this.getBindings();aBindings.forEach(function(oBinding) {oBinding.initialize();});};

遍歷所有的 binding 數(shù)據(jù)源。

SAP UI5 使用的 datajs.js, 是一種開源的跨瀏覽器 JavaScript 程序庫,可以讓開發(fā)人員在瀏覽器環(huán)境里消費 OData 服務。

在 SAP UI5 庫里位于路徑 sap/ui/thirdparty 下面,SAP 對該文件也做了一些自己的修改,通過注釋 BEGIN: MODIFIED BY SAP 和 END: MODIFIED BY SAP 來標識。

一個例子如下:

odata.defaultHandler = {read: function (response, context) {/// <summary>Reads the body of the specified response by delegating to JSON and ATOM handlers.</summary>/// <param name="response">Response object.</param>/// <param name="context">Operation context.</param>// ##### BEGIN: MODIFIED BY SAP// added response.body check and removed assigned(response.body) call...for the case that if body is empty string...don't process any response body dataif (response && response.body && response.headers["Content-Type"]) {// ##### END: MODIFIED BY SAPdispatchHandler("read", response, context);}},

更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:

總結

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

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