Xml反序列化异常

本文关键字:异常 反序列化 Xml | 更新日期: 2023-09-27 17:51:26

我只是想把一个xml文件反序列化成一个类。

我的xml文件:

<DirectoryListener inputDirectory="C:'test'" 
                   outputDirectory="C:'keyValueXml'" 
                   fileExt=".xml"/>

这是我的类(由"Paste Special"生成):

public class DirectoryListenConfig
{
    [System.SerializableAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public partial class DirectoryListener
    {
        private string inputDirectoryField;
        private string outputDirectoryField;
        private string fileExtField;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string inputDirectory
        {
            get
            {
                return this.inputDirectoryField;
            }
            set
            {
                this.inputDirectoryField = value;
            }
        }
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string outputDirectory
        {
            get
            {
                return this.outputDirectoryField;
            }
            set
            {
                this.outputDirectoryField = value;
            }
        }
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string fileExt
        {
            get
            {
                return this.fileExtField;
            }
            set
            {
                this.fileExtField = value;
            }
        }
    }
}

我试着反序列化xml文件:

string path = "DirectoryConfig.xml";
XmlSerializer serializer = new XmlSerializer(typeof(DirectoryListener));
StreamReader reader = new StreamReader(path);
directoryConfig = (DirectoryListener)serializer.Deserialize(reader);//Throw an exception

得到一个异常

类型为"System"的未处理异常。附加信息:在XML文档(2,2)中有一个错误。

有什么问题吗?: '

谢谢!

Xml反序列化异常

试试这个

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"c:'temp'test.xml";
            XmlSerializer serializer = new XmlSerializer(typeof(DirectoryListener));
            StreamReader reader = new StreamReader(path);
            DirectoryListener directoryListener = (DirectoryListener)serializer.Deserialize(reader);//Throw an exception
        }
    }

    [XmlRoot("DirectoryListener")]
    public partial class DirectoryListener
    {
        private string inputDirectoryField;
        private string outputDirectoryField;
        private string fileExtField;
        [XmlAttribute("inputDirectory")]
        public string inputDirectory {get; set; }
        [XmlAttribute("outputDirectory")]
        public string outputDirectory { get; set; }
        [XmlAttribute("fileExt")]
        public string fileExt { get; set; }
    }

}