从 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的主要内容,如果未能解决你的问题,请参考以下文章

将 XML 转换为 C# 类的工具 [重复]

将具有重复节点的 XML 转换为 R 数据框

.net 下用C#产生一个永不重复10位随机数

使用-f选项时,Maven重复类具有生成的源代码

计算特定XML节点c#的子节点数[重复]

从C#中的xml字符串获取元素[重复]