当前位置: 首页 > Web前端 > vue.js

基于SAPUI5应用的ODataXML格式元数据请求分析原理,基于DOMParser

时间:2023-04-01 13:01:21 vue.js

之前的文章SAPUI5应用的OData元数据请求响应分析原理分析,介绍了SAPUI5OData元数据分析的入口。本文继续介绍基于DOMParser的XML数据解析原理。入口如下:varxmlParse=function(text){///

从指定的文本返回一个XMLDOM文档。///文档文本。///XMLDOM文档。///如果出现解析错误,此函数将抛出异常。vardomParser=window.DOMParser&&newwindow.DOMParser();变体;如果(!domParser){dom=msXmlParse(文本);if(!dom){xmlThrowParserError("不支持XMLDOM解析器");}返回dom;}dom=domParser.parseFromString(text,"text/xml");这是本地方法调用。成功解析dom元素对象:开始遍历dom对象:获取第一个元素:递归操作:成功解析元数据:解析entityType:解析成功元数据,存入response.data:触发元数据加载回调成功:ODataMetadata.prototype._handleLoaded=function(oMetadata,mParams,bSuppressEvents){varaEntitySets=[];this.oMetadata=this.oMetadata?this.merge(this.oMetadata,oMetadata,aEntitySets):oMetadata;这个.oRequestHandle=null;mParams.entitySets=aEntitySets;//解决全局承诺this.fnResolve(mParams);如果(this.bAsync&&!bSuppressEvents){this.fireLoaded(this);元数据的json对象格式和xml文本:OData元数据准备好后,执行初始化操作:ODataModel.prototype.initialize=function(){//如果元数据在创建时不可用,则对所有绑定调用初始化varaBindings=this.getBindings();aBindings.forEach(函数(oBinding){oBinding.initialize();});};遍历所有绑定数据源。SAPUI5使用的datajs.js是一个开源的跨浏览器JavaScript库,允许开发人员在浏览器环境中使用OData服务。在路径sap/ui/thirdparty下的SAPUI5库中,SAP也对这个文件做了一些自己的修改,由注释BEGIN:MODIFIEDBYSAP和END:MODIFIEDBYSAP标识。一个例子如下:odata.defaultHandler={read:function(response,context){///通过委托给JSON和ATOM处理程序读取指定响应的主体。///Responseobject.///Operationcontext.//#####BEGIN:MODIFIEDBYSAP//添加了response.body检查并移除assigned(response.body)调用...对于body为空字符串的情况...不处理任何响应主体数据if(response&&response.body&&response.headers["Content-Type"]){//#####结束:由SAPdispatchHandler("read",response,context)修改;}},更多Jerry的原创文章,尽在:"汪子熙":