【发布时间】:2023-01-19 17:42:33
【问题描述】:
以下是创建文档的代码 sn-p:
CdtrAcct = new CdtrAcct
{
Id = new Id
{
IBAN = iban,
Othr = new Othr
{
Id = creditBankAcct
},
},
},
如果 IBAN 字段有值,则 Id 为空。但是,当形成 XML 文件时,我得到以下信息:
<CdtrAcct>
<Id>
<IBAN>XXXXXXXXXXXXXXXXXXX</IBAN>
<Othr />
</Id>
</CdtrAcct>
我遇到的问题是读取 XML 的软件无法处理此处的空格:<Othr />。我需要做什么才能获得<Othr/>?
C#代码:
XmlSerializer serializer = new XmlSerializer(typeof(Document));
var textWriter = new StreamWriter(@"C:\BankFiles\Outbox\" + filename + ".xml");
serializer.Serialize(textWriter, config);
textWriter.Close();
【问题讨论】:
-
修复其他有问题的软件。空格在 XML 中并不重要。
<Othr />、<Othr/>或<Othr></Othr>之间没有区别。使用您想要的任何 XML 验证器,您发布的是完全有效的 XML。 -
@Panagiotis,我无法修复其他软件,这是一家使用此 XML 的银行,我只是通过 XML 向他们发送付款信息。
-
告诉他们他们有一个错误。任何银行都不能改变 XML 的定义。如果他们签署了一份要求 XML 的合同,他们就必须接受 XML。否则,他们违反了自己的合同。如果他们想更改合同以接受他们自己的自定义文本格式,他们应该更改合同,明确说明并支付费用。
-
一旦涉及甚至提及合同和律师,银行就很容易修复有问题的软件。他们甚至不能对 XML 做出任何声明——它是一个国际标准,所有 XML 验证器都将接受这个 XML 字符串。
-
您可以使用接受 XmlWriter 的 Serialize overload 自定义 XML 输出。您可以使用 XmlWriter.Create 在流上创建具有自定义设置的 XmlWriter,但 none of the settings 会影响元素内的空白