【问题标题】:custom(?) serialization of list c#列表c#的自定义(?)序列化
【发布时间】:2020-08-16 15:57:56
【问题描述】:

我正在尝试将包含列表的 c# 对象转换为 XML。该列表很好:

<image>dummy</image>
<image>dummy2</image>
<image>dummy3</image>

等等。我希望标签是独一无二的,例如:

<image_1>dummy</image_1>
<image_2>dummy2</image_2>
<image_3>dummy3</image_3>

但我不太确定如何得到这个结果。

任何意见表示赞赏:)

【问题讨论】:

  • 我建议不要这样做,为您的 XML 文档创建 XSD (xml schema) 会很麻烦。
  • 欢迎来到 StackOverflow。请分享您的代码并提供有关您的实施的更多详细信息。
  • 一种更“对 XML 友好”的方法是拥有一组具有相同标签“图像”的元素,但具有您用作唯一标识符的 属性 . &lt;imageCollection&gt;&lt;image id="image_1"&gt;dummy 1&lt;/image&gt;&lt;image id="image_2"&gt;dummy 2&lt;/image&gt;&lt;/imageCollection&gt; 你能接受吗?或者,您能否解释一下导致您得出结论需要唯一标签的实际问题? (对我来说,它看起来像 X/Y problem
  • @Pac0 是的,我知道。这有点奇怪,但这就是客户喜欢它的方式,所以我只是想给他们他们想要的。
  • 好的,我不知道细节,但在他们这边听起来一样,X/Y 问题。也许您会做得更好(让您的客户和您自己都更满意)来了解他们的实际需求。只是一个建议,我知道您可能对此一无所知。

标签: c# xml


【解决方案1】:

解决方案的粗略草图:

Stream stream = ... // your output stream

XmlWriter xml = new XmlWriter(stream)

xml.WriteStartDocument();

int index = 0;
foreach (var x in list) {
  xml.WriteStringElement("index_" + index++, x.ToString());
}

xml.Close();

https://docs.microsoft.com/en-us/dotnet/api/system.xml.xmlwriter?view=netcore-3.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 2012-05-08
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多