【问题标题】:How to deserializing xml into an object in c#如何将xml反序列化为c#中的对象
【发布时间】:2014-04-01 01:55:29
【问题描述】:

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

在将某些 xml 反序列化为 C# 中的对象时遇到问题。 测试.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("");
                }
            }

【问题讨论】:

  • 那么您从教程中尝试了什么?您在反序列化时遇到任何异常?
  • 我试过像教程一样,但它没有在控制台上显示任何东西
  • 你能发布你的userMessage类型吗?
  • 用户消息类型是什么意思>?
  • How to deserialize的可能重复

标签: c# xml serialization


【解决方案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; }
}

如果这有帮助,请告诉我。

【讨论】:

  • userMessageMethodArgumentsEntry 定义在哪里?我检查了那个帖子,找不到定义!
猜你喜欢
  • 2018-10-11
  • 2014-11-30
  • 1970-01-01
  • 2018-07-17
  • 2010-09-18
  • 1970-01-01
  • 2017-08-20
  • 2020-08-01
相关资源
最近更新 更多