簡體   English   中英

從BizTalk diffgram讀取XML響應

[英]Read XML response from BizTalk diffgram

我需要在C#中讀取來自BizTalk服務的響應內容,該服務發送了稱為diffgram的東西。 我使用SoapUI來查看服務正在響應。

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
   <s:Body>
      <ejecutaDqlResponse xmlns="http://tempuri.org/">
         <ejecutaDqlResult>
            <xs:schema id="dql" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
               <xs:element name="dql" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
                  <xs:complexType>
                     <xs:choice minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="Table1">
                           <xs:complexType>
                              <xs:sequence>
                                 <xs:element name="r_object_id" type="xs:string" minOccurs="0"/>
                                 <xs:element name="n_tipo_docto" type="xs:string" minOccurs="0"/>
                                 <xs:element name="n_fecha_celbrcn" type="xs:string" 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">
               <dql xmlns="">
                  <Table1 diffgr:id="Table11" msdata:rowOrder="0" diffgr:hasChanges="inserted">
                     <r_object_id>0902c09e80109543</r_object_id>
                     <n_tipo_docto>Asambleas de Accionistas 1.- Acta</n_tipo_docto>
                     <n_fecha_celbrcn>1/1/2014 12:00:00 AM</n_fecha_celbrcn>
                  </Table1>
                  <Table1 diffgr:id="Table12" msdata:rowOrder="1" diffgr:hasChanges="inserted">
                     <r_object_id>0902c09e8010a95a</r_object_id>
                     <n_tipo_docto>Asambleas de Accionistas Extraordinarias</n_tipo_docto>
                     <n_fecha_celbrcn>3/14/2015 12:00:00 AM</n_fecha_celbrcn>
                  </Table1>
               </dql>
            </diffgr:diffgram>
         </ejecutaDqlResult>
      </ejecutaDqlResponse>
   </s:Body>
</s:Envelope>

我唯一需要做的就是計算此響應中存在的不同r_object_id 但是我不知道該怎么做。 我嘗試了數據集.ReadXml但沒有用。

有誰能夠幫助我?

試試xml linq

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

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);
            XElement diffgram = doc.Descendants().Where(x => x.Name.LocalName == "diffgram").FirstOrDefault();
            var results = diffgram.Descendants("r_object_id").Select(x => new {
                r_object_id = (string)x
            }).ToList();
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM