c# - 为最简单的 xml 文件编写最简单的 XML 反序列化类。如何避免嵌套?在根目录反序列化?

标签 c# xml nested root xml-deserialization

我想反序列化一个 xml 文件,该文件必须采用这种形式

<Basket>
  <Fruit>Apple</Fruit>
  <Fruit>Orange</Fruit>
  <Fruit>Grapes</Fruit>
</Basket>

在我在互联网上阅读的示例中,我能找到的最不可能的格式如下

<Basket>
  <FruitArray>
    <Fruit>Apple</Fruit>
  </FruitArray>
  <FruitArray>
    <Fruit>Orange</Fruit>
  </FruitArray>
  <FruitArray>
    <Fruit>Grapes</Fruit>
  </FruitArray>
</Basket>

并且具有以下反序列化类,用于将其转换为类对象。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XMLSerialization_Basket
{
    [System.Xml.Serialization.XmlRootAttribute("Basket", Namespace = "BasketNamespace", IsNullable = false)]
    public class Basket
    {
        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("FruitArray")]
        public FruitArray[] objFruitArray;
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = "BasketNamespace")]
    public class FruitArray
    {

        /// <remarks/>
        private string _Fruit;

        public string Fruit
        {

            get { return _Fruit; }
            set { _Fruit = value; }
        }
    }


}

我可以直接在顶级下添加类似以下内容

    private string _Fruit;

    public string Fruit
    {

        get { return _Fruit; }
        set { _Fruit = value; }
    }

并避免数组嵌套?

我的目标是反序列化以下格式的 xml

<Basket>
  <Fruit>Apple</Fruit>
  <Fruit>Orange</Fruit>
  <Fruit>Grapes</Fruit>
</Basket>

最佳答案

恕我直言,我会修改我的 XML 和对象以反序列化为以下内容。

这是 C#(应该编译;))

 using System.Xml.Serialization;
    using System.Xml.Schema;
    [XmlRootAttribute(Namespace = "", IsNullable = false)]
    public class Basket
    {
        [XmlArrayAttribute("Fruits", Form = XmlSchemaForm.Unqualified)]
        [XmlArrayItemAttribute("Fruit", typeof(string), Form = XmlSchemaForm.Unqualified)]
        public List<string> _items;
    }

这是 XML

<Basket> 
  <Fruits> 
    <Fruit>Apple</Fruit> 
    <Fruit>Orange</Fruit> 
    <Fruit>Grapes</Fruit> 
  </Fruits> 
</Basket> 

关于c# - 为最简单的 xml 文件编写最简单的 XML 反序列化类。如何避免嵌套?在根目录反序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2820682/

相关文章:

c# - 无法从类转换为通用接口(interface)

java - 使用 Java 以编程方式替换 doc 文件中 XML 的最佳方法

python - 在Python中使用for循环时重置变量

C代码编码器! (数组)(嵌套循环)(fgets)(语法?)

javascript - 在knockout.js View 模型(数组)中存储特定元素

C# for 循环帮助

c# - 使用 C#/ADO.Net 实体复制大型数据库时内存不足

java 使用JAXP读取xml根节点描述

variables - 对 Netlogo 中的品种使用 "n-of"命令时出错

sorting - Elasticsearch 通过分页按价格对 InnerHits 进行排序