从 C# 中的类生成具有重复节点的 XML
Posted
技术标签:
【中文标题】从 C# 中的类生成具有重复节点的 XML【英文标题】:Generate XML with duplicate nodes from Classes in C# 【发布时间】:2021-08-27 09:57:29 【问题描述】:所以我查看了this 帖子和其他一些帖子,我不确定我是否只是没有正确搜索它,或者我正在做的事情是否行不通,所以如果这是重复的,我深表歉意完全没有。
我正在创建一个工具来生成一些 .xml 文件,这些文件最终会被输入到其他东西中,我让它工作但代码不可维护(它是一团糟)所以我试图使用重写它类而不是用旧的方式硬编码。
我有这个(更改了数据/类名,但格式相同)
var sp = new Sp.Papers
Author = new Sp.Author
Name = "Steve",
Age = 42,
Town = "East Kilbride"
,
Pages = new Sp.Pages
Number = 1,
Chapter = 1
,
Pages = new Sp.Pages
Number = 1,
Chapter = 1
我有另一个名为 Sp.Pages 的类,它需要将多个节点添加到 xml 文件中,但显然上面的代码不起作用,因为它回来了
Cannot implicitly convert type 'Sp.Pages' to 'Sp.Pages[]'
这就是类本身的样子
private Pages[] pagesField;
[XmlElement("Pages")]
public InventorySoftware[] Pages
get
return pagesField;
set
pagesField = value;
[Serializable()]
[DesignerCategory("code")]
[XmlType(AnonymousType = true)]
public partial class Pages
private int numberField;
private int chapterField;
[XmlAttribute()]
public int Number
get
return numberField;
set
numberField = value;
[XmlAttribute()]
public int Chapter
get
return chapterField;
set
chapterField = value;
基本上,最终结果需要看起来像这样 - 但我很难过,而且我在上面找不到任何东西让我很恼火......
<xml>
<author name="Steve" Age="42" Town="East Kilbride"/>
<pages number="1" chapter="1"/>
<pages number="2" chapter="1"/>
</xml>
再次,如果这是一个重复或愚蠢的问题,我深表歉意 - 我已经花了好几个小时试图找到答案现在:(
【问题讨论】:
【参考方案1】:没关系 - 当我发布此内容时,我已经找到了答案。讨厌我自己,如果其他人以后有这个问题(或者我忘记了以后的我),你就是这样做的
var sp = new Sp.Papers
Author = new Sp.Author
Name = "Steve",
Age = 42,
Town = "East Kilbride"
,
Pages = new Sp.Pages[4]
new Sp.Pages
Number = 1,
Chapter = 1
,
new Sp.Pages
Number = 2,
Chapter = 1
,
new Sp.Pages
Number = 3,
Chapter = 1
,
new Sp.Pages
Number = 4,
Chapter = 1
其中 [4] 是您想要的条目数 - 因此,如果您不想对其进行硬编码等,您显然会从整数中提取它。
【讨论】:
嗨,@莱姆。这个解决方案能解决您的问题吗?如果解决了,您可以单击“✔”接受它作为答案。有助于社区成员解决类似问题。以上是关于从 C# 中的类生成具有重复节点的 XML的主要内容,如果未能解决你的问题,请参考以下文章