2016-08-09 13 views
0

diffgramというものを送信するBizTalkサービスからの応答コンテンツをC#で読む必要があります。 SoapUIを使用して、サービスが応答していることを確認しました。BizTalk diffgramからのXML応答の読み取り

<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を数えています。しかし、私はそれを行う方法を理解することはできません。私はdataset.ReadXmlを試しましたが、うまくいきませんでした。

誰かが私を助けることができますか?

+0

(図示のように)あなたは、XMLのブロックまたは文字列としてこの応答を取得していますか? – tgolisch

+0

はい。 Imはこれをxmlblockとして取得していますが、biztalkservice以降、私のC#コードを取得するクラスは "ejecutaDqlResponse"です。表示される文字列は、SOAP UIを使用して取得するものです –

答えて

0

てみた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(); 
     } 
    } 
} 
+0

ありがとうございます。レスポンスはオブジェクトなので、私はAny要素のプロパティ数を尋ねました。しかし、私はあなたのランポを試します。 –

関連する問題