XML列表未包含在根元素反序列化中

时间:2013-06-18 10:08:06

标签: c# xml xml-serialization

我的XML结构类似于:

<rootNode>
   <node/>
   <otherNode/>
   <specificNode>
      nested nodes
   </specificNode>
   <specificNode>
      nested nodes
   </specificNode>
</rootNode>

然后我有相应的课程:

class rootNode
{
   string node;
   string otherNode;
   List<specificNodesClass> specificNodes;
}

class specificNodesClass
{
   //all the specific Node's nested nodes
}

如何将XML反序列化为fullFill rootNode类型对象? 我试过了:

XmlSerializer serializer = new XmlSerializer(typeof(rootNode));
result = (rootNode)serializer.Deserialize(xdocument.CreateReader(ReaderOptions.None));

[XmlElement("specificNode")]以上List<specificNodesClass> specificNodes;,但我得到&#34;输入字符串的格式不正确。&#34;异常。

由于特定节点的嵌套元素不正确反序列化会导致异常吗?

正如我所怀疑的那样,问题出现在其中一个特定节点的嵌套节点上。问题解决了!谢谢大家!

2 个答案:

答案 0 :(得分:0)

使用[XmlRoot(“rootNode”)]装饰类rootNode,并使用[XmlElement()]

适当地修饰类的属性

您也可以使用

public static T DeSerializeObject<T>(string xml)
    {
        if (string.IsNullOrEmpty(xml))
        {
            return default(T);
        }

        XmlSerializer _xs = new XmlSerializer(typeof(T));

        using (StringReader _tr = new StringReader(xml))
        {
            using (XmlReader _xr = XmlReader.Create(_tr, new XmlReaderSettings()))
            {
                return (T)_xs.Deserialize(_xr);
            }
        }
    }

答案 1 :(得分:0)

您可以使用以下代码反序列化XML:

XmlSerializer deserializer = new XmlSerializer(typeof(rootNode));
TextReader reader = new StreamReader(@"D:\myXml.xml");//path of xml file
object obj = deserializer.Deserialize(reader);
rootNode XmlData = (rootNode)obj;
reader.Close();

有关更多资讯,Click here