1

我的 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 以填充 rootNode 类型对象?我试过了 :

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

[XmlElement("specificNode")]上面有,List<specificNodesClass> specificNodes;但我得到“输入字符串的格式不正确。” 例外。

会不会是由于 specificNode 的嵌套元素反序列化不正确导致的异常?

正如我所怀疑的,问题出在特定节点的嵌套节点之一。问题解决了!谢谢大家!

4

2 回答 2

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();

更多参考,点击这里

于 2013-06-18T10:23:10.650 回答
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);
            }
        }
    }
于 2013-06-18T10:19:59.620 回答