我正在尝试使用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();
}
}
我的代码的结果如下:
如何在我的示例中将Document标记中的文本设置为与Document标记相同?
并且当我在IE中打开xml时添加消息标记xmlns
。 xmlns
标记在上面的结果图片中不可见(在Firefox中)。如何删除此标签?如何将MsgId
中的文本设置为链接示例xml中的MsgId
?也许XMLWriter不是我的最佳选择?如果是这样,又有什么更好的选择?
当然,这只是XML的一小部分,但如果知道它是如何工作的,我想我自己可以做其余的事。
答案 0 :(得分:0)
只是一个善意的建议(因为我在金融数据交换方面有一些经验,尤其是SEPA
)...我不会尝试使用这样的低级别来实现那个狗屎{ {1}} API;有更好的方法来创建复杂的XML
文档,而不是与XML
一起组装它们。
由于XmlWriter
文档可能变得非常大,因此按照您尝试的方式实现它可能会导致难以维护且容易出错的意大利面条代码。相反,我建议调查模型驱动的方法(每个SEPA
用例实现一个),然后使用生成器(考虑使用可以使用{转换的中间SEPA
格式{1}})或文本处理器来生成最终输出...