2014-04-01 67 views
-1

这是我想要反序列化的xml文件。如何将xml反序列化到c中的对象#

在将某些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(""); 
       } 
      } 
+0

那么你从教程中试用了什么?你在反序列化时遇到任何异常? – Nilesh

+0

我尝试像教程,但它没有显示任何东西在控制台上 – NTK88

+0

你可以发布你的'userMessage'类型吗? – Nilesh

回答

1

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

这里是deserialze代码

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; } 
} 

让我知道这是否有帮助。

+0

哪里是'userMessageMethodArgumentsEntry'定义?我查了那个帖子,找不到定义! – Nilesh

+0

谢谢你Nilesh它的工作! – NTK88

+0

太棒了,它的工作。 – Nilesh