CeebLaj Thoj Ответов: 0

Как прочитать XML - данные, возвращаемые из WCF datatable в javascript?


Привет,

Наш текущий сервис был разработан в WCF,и большая часть метода возвращается в виде комбинации DataTable и string.

Теперь им нужно разработать веб-базу на этом сервисе, но не нужно реструктурировать или модифицировать код, просто верните его в виде json для поддержки http-запроса.

Ниже приведен мой пример данных:

<DataTable xmlns="http://schemas.datacontract.org/2004/07/System.Data">
	<xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
	<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="TableName" msdata:UseCurrentLocale="true"><xs:complexType>
	<xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="TableName"><xs:complexType><xs:sequence><xs:element name="TraID" type="xs:int" minOccurs="0"/><xs:element name="TraDate" type="xs:dateTime" minOccurs="0"/></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema>
	
	<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
		<DocumentElement xmlns="">
			<TableName diffgr:id="TableName1" msdata:rowOrder="0">
				<TraID>16001</TraID>
				<TraDate>2016-07-30T00:00:00+07:00</TraDate>
			</TableName>

			<TableName diffgr:id="TableName2" msdata:rowOrder="1">
				<TraID>16002</TraID>
				<TraDate>2016-07-29T00:00:00+07:00</TraDate>
			</TableName>
		</DocumentElement>
	</diffgr:diffgram>
</DataTable>


Метод AngularJS $http:

$http({
        url: api_url + "/GetTra?PassKey=" + passkey,
        method: "GET",
        headers: {
            'Content-Type': 'application/json; charset=utf-8'
        },
        dataType: 'json'
    }).then(function (r) {
        console.log(r.data.GetTraResult);
    }, function (e) {

    });


Итак, моя проблема заключается в том, как я могу получить выше xml-данные в виде массива или объекта для отображения в представлении?

Я пробовал что-то подобное, но он говорит, что получил неопределенное имя тега
var transaction = [];
    var tra = {

    };

    function myFunction(xml) {
        var i;
        var xmlDoc = xml.responseXML;
        var data = xmlDoc.getElementsByTagName("TableName");
        for (i = 0; i < data.length; i++) {
            var d = data[i];
            tra.TraID = d[i].getElementsByTagName("TraID")[0].childNodes[0].nodeValue;
            tra.TraDate = d[i].getElementsByTagName("TraDate")[0].childNodes[0].nodeValue;
            transaction.push(tra);
        }
    }


Заранее благодарю вас за помощь.

Что я уже пробовал:

Я пытаюсь использовать какую-то стандартную xml-функцию от google, но она не работает в этом формате xml-данных, поэтому, пожалуйста, помогите мне.

0 Ответов