我的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;异常。
由于特定节点的嵌套元素不正确反序列化会导致异常吗?
正如我所怀疑的那样,问题出现在其中一个特定节点的嵌套节点上。问题解决了!谢谢大家!
答案 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