以XML格式获取响应数据

时间:2014-08-19 13:17:29

标签: javascript xml sapui5

我们使用JSON.stringify(oData);来获取json中的数据,我们如何以xml的形式获取数据?

oModel.read('/', null, null, true, function(oData, oResponse){
    var data = JSON.stringify(oData);
    document.write(data );
});

2 个答案:

答案 0 :(得分:0)

要获取XML格式的响应,请将$ format = xml添加到odata url

参见示例:

  1. http://services.odata.org/Northwind/Northwind.svc/Products?$格式= JSON
  2. http://services.odata.org/Northwind/Northwind.svc/Products?$格式= XML
  3. 要获得XML格式的回复,请使用sap.ui.model.xml.XMLModel

    oModel.read('/?$format=xml', null, null, true, function(oData, oResponse){
        var xmlDataModel = new sap.ui.model.xml.XMLModel(oData);    
    });
    

答案 1 :(得分:0)

您正在使用OData服务,但您希望以特定格式提供响应。对我来说,这只能意味着你想要绕过ODataModel机制为你做的所有工作,并获得OData服务器返回的原始XML。如果是这样的话,我有一个问题和答案。

问题:为什么?

答案:如果你真的想从OData响应中获取XML,即通常从诸如http://services.odata.org/Northwind/Northwind.svc/Products之类的Northwind实体集返回的原始Atom提要,那么你实际上可以访问整个HTTP响应read()方法成功回调中的对象。在您的问题中扩展源代码,它看起来像这样:

oModel.read('/', null, null, true, function(oData, oResponse){
    document.write(oResponse.body);
});

这会产生这样的结果:

<feed xml:base="http://services.odata.org/Northwind/Northwind.svc/" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<id>http://services.odata.org/Northwind/Northwind.svc/Products</id>
<title type="text">Products</title>
<updated>2014-08-26T07:33:36Z</updated>
<link rel="self" title="Products" href="Products"/>
<entry>
<id>http://services.odata.org/Northwind/Northwind.svc/Products(1)</id>
...

但是 - 你确定你真的想要这个吗?