如何解析这个soap请求并在Modal中获取它们的值

时间:2017-10-23 12:20:22

标签: c#

如何解析此soap请求以获取其在数据集中的值

<?xml version="1.0" encoding="utf-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
         <ns3:initiateTransactionResponseType xmlns:ns2="http://dto.common.pg.systems.com/" xmlns:ns3="http://dto.transaction.partner.pg.systems.com/"><ns2:responseCode>0000</ns2:responseCode>
             <orderId>test006</orderId>
             <storeId>386</storeId>
             <paymentToken>6588</paymentToken>
             <transactionDateTime>2017-10-23T15:24:11.503+05:00</transactionDateTime>
             <paymentTokenExiryDateTime>2017-10-27T15:24:11.503+05:00</paymentTokenExiryDateTime>
         </ns3:initiateTransactionResponseType> 
    </soapenv:Body>
</soapenv:Envelope>

1 个答案:

答案 0 :(得分:0)

使用xml Linq

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.Data;

namespace ConsoleApplication10
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {

            XDocument doc = XDocument.Load(FILENAME);
            XElement root = doc.Root;
            XNamespace ns = root.GetDefaultNamespace();

            DataTable dt = new DataTable();
            dt.Columns.Add("OrderID", typeof(string));
            dt.Columns.Add("storeID", typeof(int));
            dt.Columns.Add("paymentToken", typeof(int));
            dt.Columns.Add("transactionDateTime", typeof(DateTime));
            dt.Columns.Add("paymentTokenExiryDateTime", typeof(DateTime));

            dt.Rows.Add(new object[] {
                (string)root.Descendants(ns + "orderId").FirstOrDefault(),
                (int)root.Descendants(ns + "storeId").FirstOrDefault(),
                (int)root.Descendants(ns + "paymentToken").FirstOrDefault(),
                (DateTime)root.Descendants(ns + "transactionDateTime").FirstOrDefault(),
                (DateTime)root.Descendants(ns + "paymentTokenExiryDateTime").FirstOrDefault()
            });


        }
    }
}