如何在x#中将xml反序列化为对象

时间:2014-04-01 01:55:30

标签: c# xml serialization

这是我要反序列化的xml文件。

在将某些xml反序列化为C#中的对象时遇到问题。 的test.xml

<userMessage> <methodArguments> <entry> <key>text</key> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">TEST</value> </entry> </methodArguments> <methodName>relay:show:1</methodName> </userMessage> 我用xsd工具生成了这个TEST.cs 我想在控制台上显示XML值。

我想做一些类似本教程http://blogs.msdn.com/b/yojoshi/archive/2011/05/14/xml-serialization-and-deserialization-entity-classes-with-xsd-exe.aspx?Redirected=true的内容 我写了这个,但我认为它不正确  课程     {

    static void Main(string[] args)
    {
        using (FileStream xmlStream = new FileStream("C:\\Users\\INI\\Desktop\\XML\\TEST.xml", FileMode.Open))
        {
            using (XmlReader xmlReader = XmlReader.Create(xmlStream))
            {



               XmlSerializer serializer = new XmlSerializer(typeof(userMessage), new XmlRootAttribute("userMessage"));
               userMessage deserializedTest = serializer.Deserialize(xmlReader) as userMessage;
               foreach(var student in deserializedTest.methodName)
                {
                Console.WriteLine("aaaaaaaaa", student);


                Console.WriteLine("");
                }
            }

1 个答案:

答案 0 :(得分:1)

我刚刚创建了一个UserMessage类型,代码运行正常。无法发布我所做的评论,因此将其作为答案发布。这可能会对你有所帮助。

这是反序列化代码

System.Xml.Serialization.XmlSerializer srl = new 
                 System.Xml.Serialization.XmlSerializer(typeof(UserMessage));
XmlReader reader = XmlReader.Create(@"D:\temp\test.xml");
var obj= srl.Deserialize(reader);

以下是类型。

[Serializable]
public class UserMessage
{
    public MethodArguments MethodArguments { get; set; }
    public string MethodName { get; set; }
}
public class MethodArguments
{
    public Entry Entry { get; set; }
}
public class Entry
{
    public string Key { get; set; }
    public string Value { get; set; }
}

如果有帮助,请告诉我。