首页 > 解决方案 > 使用 .Net Core 3 解析 XML 时遇到问题

问题描述

我没有太多使用 XML 的经验,所以如果这是基本的东西,请原谅我。我有一个要反序列化为对象的提要,其中一些有效,但有些无效。这是相关 XML 的示例

<rss version ='2.0' xmlns:n='http://something.com/1.0'>
    <group>
        <title>Sample data</title>
        <description>Sample feed description</description>
        <link>https://www.sampledealership.co.uk/index.php/</link>
        <item>
            <n:id>xxx567</n:id>
            <title>Ford Fiesta</title>
            <description>A black Ford Fiesta</description>
        </item>
        <item>
            <n:id>gg567</n:id>
            <title>2019 Camero</title>
            <description>A red Chevrolet Camero</description>
        </item>
    </group>
</rss>

这是我的课

public class rss
{
    [XmlAttribute(AttributeName = "version", Namespace = "")]
    public decimal version { get; set; }

    [XmlElement(ElementName = "group", Namespace = "")]
    public Group group { get; set; }
}

public class Group
{
    [XmlElement(ElementName = "title", Namespace = "")]
    public string title { get; set; }

    [XmlElement(ElementName = "description", Namespace = "")]
    public  string description { get; set; }

    [XmlElement(ElementName = "link", Namespace = "")]
    public string link { get; set; }

    //[XmlArray("group")]
    //[XmlArrayItem("item", typeof(Item))]
    [XmlElement(ElementName = "item", Namespace = "")]
    private List<Item> item { get; set; }
}

public class Item
{
    [XmlElement(ElementName = "id", Namespace = "http://something.com/1.0")]
    public string id { get; set; }
    [XmlElement(ElementName = "title", Namespace = "")]
    public string title { get; set; }
    [XmlElement(ElementName = "description", Namespace = "")]
    public string description { get; set; }
}

这是我的测试中试图反序列化它的代码。

using (var stream = System.IO.File.OpenRead(@"Resources/carfeed.xml"))
{
    var root = new XmlRootAttribute();
    root.ElementName = "rss";
    var serializer = new XmlSerializer(typeof(rss), root);
    var car = ((rss) serializer.Deserialize(stream));
};

我得到了组中包含的所有数据,除了项目,它们是空的。我试过使用 XmlArray 注释,但仍然没有。我希望我在某个地方犯了拼写错误。无论如何,您的帮助将不胜感激。

标签: c#xml.net-corexml-deserialization

解决方案


推荐阅读