2016-10-23 5 views
0

私はデータセットを持っており、XMLファイルを作成したいと思います。作成したいXMLファイルにはカスタム階層/要素があります。 XMLファイルを作成するXML形式を確認してください。データセットからカスタムXMLファイルを作成

<?xml version="1.0"?> 
 

 
-<soapenv:Envelope xmlns:init="http://www.kotak.com/PaymentTransactionService/InitiateRequest/" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
 

 
<soapenv:Header/> 
 

 
-<soapenv:Body> 
 

 
-<init:InitiateRequestRoot> 
 

 
-<init:RequestHeader> 
 

 
<init:MessageId>MSG-1</init:MessageId> 
 

 
<init:MsgSource>BILLDESK</init:MsgSource> 
 

 
<init:ClientCode>0KMMF</init:ClientCode> 
 

 
<init:BatchRefNmbr>BATCHREF-1</init:BatchRefNmbr> 
 

 
</init:RequestHeader> 
 

 
-<init:InstrumentList> 
 

 
<!--1 or more repetitions:--> 
 

 
-<init:instrument> 
 

 
<init:InstRefNo>10000000000000000001</init:InstRefNo> 
 

 
<!--Optional:--> 
 

 
<init:CompanyId>DUMMY</init:CompanyId> 
 

 
<init:CompBatchId>BATCHID1</init:CompBatchId> 
 

 
<init:ConfidentialInd>N</init:ConfidentialInd> 
 

 
<init:MyProdCode>EPAYMENTS</init:MyProdCode> 
 

 
<init:CompTransNo>DUMMY</init:CompTransNo> 
 

 
<init:PayMode>IFT</init:PayMode> 
 

 
<init:TxnAmnt>120</init:TxnAmnt> 
 

 
<init:DrRefNmbr>DEBITREF</init:DrRefNmbr> 
 

 
<init:DrDesc>DRDESC</init:DrDesc> 
 
</init:instrument>

まず私は、リクエスト・ヘッダーを作成したいと、その後、私は、すべてのデータセットのレコードが表示されますその下に「インストゥルメント・リスト」要素が欲しいです。どのように私はこれを行うことができます....誰でも私を助けてください。

答えて

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 
    { 
     static void Main(string[] args) 
     { 
      string headerStr = 
       "<?xml version=\"1.0\"?>" + 
       "<soapenv:Envelope xmlns:init=\"http://www.kotak.com/PaymentTransactionService/InitiateRequest/\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" + 
       "</soapenv:Envelope>"; 

      XDocument soap = XDocument.Parse(headerStr); 
      XElement envelope = (XElement)soap.FirstNode; 
      XNamespace soapNs = envelope.GetNamespaceOfPrefix("soapenv"); 
      XNamespace initNs = envelope.GetNamespaceOfPrefix("init"); 

      XElement header = new XElement(soapNs + "Header", new object[] { 
       new XElement(soapNs + "Body", new object[] { 
        new XElement(initNs + "InitiateRequestRoot") 
       }) 
      }); 
      XElement initiateRequestRoot = header.Descendants(initNs + "InitiateRequestRoot").FirstOrDefault(); 
      envelope.Add(header); 

      XElement requestHeader = new XElement(initNs + "RequestHeader", new object[] { 
       new XElement(initNs + "MessageId", "MSG-1"), 
       new XElement(initNs + "MsgSource","BILLDESK"), 
       new XElement(initNs + "ClientCode","0KMMF"), 
       new XElement(initNs + "BatchRefNmbr","BATCHREF-1"), 
      }); 
      initiateRequestRoot.Add(requestHeader); 

      XElement instrumentList = new XElement(initNs + "InstrumentList", new object[] { 
       new XElement(initNs + "instrument") 
      }); 
      initiateRequestRoot.Add(instrumentList); 
      XElement instrument = header.Descendants(initNs + "instrument").FirstOrDefault(); 

      instrument.Add(new object[] { 
       new XElement(initNs + "InstRefNo", "10000000000000000001"), 
       new XElement(initNs + "CompanyId", "DUMMY"), 
       new XElement(initNs + "CompBatchId", "BATCHID1"), 
       new XElement(initNs + "ConfidentialInd", "N"), 
       new XElement(initNs + "MyProdCode", "EPAYMENTS"), 
       new XElement(initNs + "CompTransNo", "DUMMY"), 
       new XElement(initNs + "PayMode","IFT"), 
       new XElement(initNs + "TxnAmnt", "120"), 
       new XElement(initNs + "DrRefNmbr", "DEBITREF"), 
       new XElement(initNs + "DrDesc", "DRDESC") 
      }); 

     } 
    } 
} 
関連する問題