Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要帮助反序列化XML数据吗_C#_Xml_Deserialization - Fatal编程技术网

C# 需要帮助反序列化XML数据吗

C# 需要帮助反序列化XML数据吗,c#,xml,deserialization,C#,Xml,Deserialization,我正在尝试使用C对下面的XML进行反序列化# 在运行测试用例调试模式后,XmlData4具有null,而不具有XML数据。请帮助我如何修改此代码以使其正常工作。DataContract和DataMember是DataContractSerializer的属性,因此您应该替换序列化器或使用XmlSerializer的属性(XmlRoot,XmlElement等)更改反序列化类: using System; using System.Xml.Serialization; using System.C

我正在尝试使用C对下面的XML进行反序列化#


在运行测试用例调试模式后,XmlData4具有null,而不具有XML数据。请帮助我如何修改此代码以使其正常工作。

DataContract
DataMember
DataContractSerializer
的属性,因此您应该替换序列化器或使用
XmlSerializer
的属性(
XmlRoot,XmlElement
等)

更改反序列化类:

using System;
using System.Xml.Serialization;
using System.Collections.Generic;
namespace ConsoleApp4
{
    [XmlRoot(ElementName = "Sample")]
    public class Sample
    {
        [XmlElement(ElementName = "AccountId")]
        public string AccountId { get; set; }
        [XmlElement(ElementName = "AccountNumber")]
        public string AccountNumber { get; set; }
    }

    [XmlRoot(ElementName = "Samples")]
    public class Samples
    {
        [XmlElement(ElementName = "Sample")]
        public List<Sample> Sample { get; set; }
    }

    [XmlRoot(ElementName = "Invoice")]
    public class Invoice
    {
        [XmlElement(ElementName = "Samples")]
        public Samples Samples { get; set; }
    }
}
private static Invoice LoadInvoice(string fileName)
{
    var serializer = new XmlSerializer(typeof(Invoice));

    if (!File.Exists(fileName))
    {
        return null;
    }
    using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        return (Invoice)serializer.Deserialize(fs);
    }
}
结果:

using System;
using System.Xml.Serialization;
using System.Collections.Generic;
namespace ConsoleApp4
{
    [XmlRoot(ElementName = "Sample")]
    public class Sample
    {
        [XmlElement(ElementName = "AccountId")]
        public string AccountId { get; set; }
        [XmlElement(ElementName = "AccountNumber")]
        public string AccountNumber { get; set; }
    }

    [XmlRoot(ElementName = "Samples")]
    public class Samples
    {
        [XmlElement(ElementName = "Sample")]
        public List<Sample> Sample { get; set; }
    }

    [XmlRoot(ElementName = "Invoice")]
    public class Invoice
    {
        [XmlElement(ElementName = "Samples")]
        public Samples Samples { get; set; }
    }
}
private static Invoice LoadInvoice(string fileName)
{
    var serializer = new XmlSerializer(typeof(Invoice));

    if (!File.Exists(fileName))
    {
        return null;
    }
    using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        return (Invoice)serializer.Deserialize(fs);
    }
}

谢谢你的回答!!
private static Invoice LoadInvoice(string fileName)
{
    var serializer = new XmlSerializer(typeof(Invoice));

    if (!File.Exists(fileName))
    {
        return null;
    }
    using (var fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    {
        return (Invoice)serializer.Deserialize(fs);
    }
}