C# 在C中正确解析XML文件#

C# 在C中正确解析XML文件#,c#,asp.net,.net,xml,C#,Asp.net,.net,Xml,我试图读取以xml格式保存的给定文件,但遇到错误“对象引用未设置为对象的实例” 编辑:我不能为此使用任何类型的序列化。对于这种情况,最简单的方法是使用XmlSerializer。这不是使用.net可以实现的唯一方法,因为有XmlReader、XmlTextReader和XDocument可以帮助您实现这一点,但XmlSerializer允许您轻松地将数据结构转换为xml并返回。以下是一个例子: using System; using System.Collections.Gen

我试图读取以xml格式保存的给定文件,但遇到错误“对象引用未设置为对象的实例”


编辑:我不能为此使用任何类型的序列化。

对于这种情况,最简单的方法是使用XmlSerializer。这不是使用.net可以实现的唯一方法,因为有XmlReader、XmlTextReader和XDocument可以帮助您实现这一点,但XmlSerializer允许您轻松地将数据结构转换为xml并返回。以下是一个例子:

     using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    using System.Xml.Serialization;

    namespace TestXmlSerializer
    {
        class Program
        {
            static void Main(string[] args)
            {
                var g = new Group
                {
                    Name="g2",
                    Keys = new[] {
                        new Key { Username="a" },
                        new Key { Password="b" }
                    }
                };

                Group g2;

                var xs = new XmlSerializer(typeof(Group));
                var s = string.Empty;


                using (var tw = new StringWriter()) {
                    using (var xw = XmlWriter.Create(tw))            
                        xs.Serialize(xw, g);               
                    s = tw.ToString();
                }

                Console.WriteLine(s);


                using (var ms = new StringReader(s))
                {               
                    using (var xw = XmlReader.Create(ms))
                        g2 = xs.Deserialize(xw) as Group;
                }

                Console.WriteLine(g2.Name);
            }

        }


        [Serializable]
        public class Key
        {
            [XmlAttribute]
            public string Title;
            [XmlAttribute]
            public string Username;
            [XmlAttribute]
            public string Password;
            [XmlAttribute]
            public string Url;
            [XmlAttribute]
            public string Notes;
        }

        [Serializable]
        public class Group
        {
            [XmlAttribute]
            public string Name;

            [XmlElement]
            public Key[] Keys;
        }
    }

你有xml的模式吗?@vittore我不知道你在问什么。您想让我发布一个XML文件的示例吗?XML模式,XSD,它指定XML中可以包含哪些标记、属性和内容。@vittore我还不确定。我正在使用上面详述的保存方法创建自己的xml文件。如果您有调试问题-请确保使用调用堆栈提供示例数据和准确的错误消息。不幸的是,我无法为此使用序列化。很抱歉没有在主要帖子中提到这一点。我现在就编辑它。