XmlWriter创建SEPA XML

时间:2014-12-11 09:20:32

标签: c# xml

我正在尝试使用XmlWriter创建SEPA XML。创建的XML必须如下例所示:

http://www.ebics.de/fileadmin/unsecured/anlage3/anlage3_pain008/pain_ex/pain.008.003.02.xml

到目前为止,这是我的代码:

        public void generateSepaXml()
        {
            XmlWriterSettings settings = new XmlWriterSettings();
            settings.Indent = true;

        using (XmlWriter writer = XmlWriter.Create("C:\\Users\\Sybren\\Documents\\test.xml",settings))
        {
            String messageId = "Message ID";

            writer.WriteStartDocument();
            writer.WriteStartElement("Document"); //Document start
            writer.WriteAttributeString("xsi",@"schemaLocation=""urn:iso:std:iso:20022:tech:xsd:pain.008.003.02 pain.008.003.02.xsd");
            writer.WriteStartElement("CstmrDrctDbtInitn"); // CstmrDrctDbtInitn tag start
            writer.WriteStartElement("GrpHdr"); //GrpHeader tag start
            writer.WriteStartElement("MsgId",messageId); //Message tag start
            writer.WriteEndElement(); //Message tag end
            writer.WriteEndElement(); //GrpHdr end
            writer.WriteEndElement(); //CstmrDrctDbtInitn tag end
            writer.WriteEndElement(); //Document end
            writer.WriteEndDocument();


        }
    }

我的代码的结果如下:

enter image description here

如何在我的示例中将Document标记中的文本设置为与Document标记相同? 并且当我在IE中打开xml时添加消息标记xmlnsxmlns标记在上面的结果图片中不可见(在Firefox中)。如何删除此标签?如何将MsgId中的文本设置为链接示例xml中的MsgId?也许XMLWriter不是我的最佳选择?如果是这样,又有什么更好的选择? 当然,这只是XML的一小部分,但如果知道它是如何工作的,我想我自己可以做其余的事。

1 个答案:

答案 0 :(得分:0)

只是一个善意的建议(因为我在金融数据交换方面有一些经验,尤其是SEPA)...我不会尝试使用这样的低级别来实现那个狗屎{ {1}} API;有更好的方法来创建复杂的XML文档,而不是与XML一起组装它们。

由于XmlWriter文档可能变得非常大,因此按照您尝试的方式实现它可能会导致难以维护且容易出错的意大利面条代码。相反,我建议调查模型驱动的方法(每个SEPA用例实现一个),然后使用生成器(考虑使用可以使用{转换的中间SEPA格式{1}})或文本处理器来生成最终输出...