Создать пользовательский 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>

Сначала я хочу создать заголовок запроса, а после этого мне нужен элемент «Список инструментов», под которым будут отображаться все записи набора данных. Как я могу это сделать .... может кто-нибудь, пожалуйста, помогите мне.


person Syed Shams    schedule 23.10.2016    source источник


Ответы (1)


Используйте xml-линк. Что-то вроде этого

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")
            });

        }
    }
}
person jdweng    schedule 23.10.2016