我正在执行将 XML 文件转换为列表对象的程序。我已成功完成从 List 到 XML 的序列化。但是在进行反序列化时遇到问题。请任何人告诉我我在这段代码中做错了什么。
这是我的 XML 代码。
<?xml version="1.0"?>
<Contact_x0020_Form xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Contact>
<Contact>
<Id>1</Id>
<Name>vicky1kumar</Name>
<Phone>248847227</Phone>
</Contact>
<Contact>
<Id>2</Id>
<Name>vicky1kumar2kumar</Name>
<Phone>725228355</Phone>
</Contact>
<Contact>
<Id>3</Id>
<Name>vicky1kumar2kumar3kumar</Name>
<Phone>2032848116</Phone>
</Contact>
<Contact>
<Id>4</Id>
<Name>vicky1kumar2kumar3kumar4kumar</Name>
<Phone>853938969</Phone>
</Contact>
<Contact>
<Id>5</Id>
<Name>vicky1kumar2kumar3kumar4kumar5kumar</Name>
<Phone>530646891</Phone>
</Contact>
</Contact>
<Id>0</Id>
</Contact_x0020_Form>
这是我的用于将 XML 转换为列表对象的类
public class Converter
{
public static T XmlToObject<T>(string xml)
{
using (var xmlStream = new StringReader(xml))
{
var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(XmlReader.Create(xmlStream));
}
}
public static List<T> XmlToObjectList<T>(string xml, string nodePath)
{
var xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml);
var returnItemsList = new List<T>();
foreach (XmlNode xmlNode in xmlDocument.SelectNodes(nodePath))
{
returnItemsList.Add(XmlToObject<T>(xmlNode.OuterXml));
}
return returnItemsList;
}
}
这是我的反序列化代码......
List<string> decont = new List<string>();
decont = Converter.XmlToObjectList<string>(@"C:\vignesh\serialization\xmlserialize\XmlSerializeContact.xml","//Contact");
foreach (var item in decont)
{
Console.WriteLine(decont);
}
我收到这个错误:
根级别的数据无效。第 1 行,位置 1。
根级别的数据无效。第 1 行,位置 1。
要解决第一个错误,您必须了解原因。问题是LoadXml接受 xml 字符串;而您正在传递 Xml 文件的路径。你需要使用Load代替LoadXml
.
也就是说,还有很多其他事情需要纠正。这连载的您的问题中提供的 XML 似乎不正确——例如这Contact
节点是它自己的父节点。因此,您的节点选择将为您提供整个 Xml。 (你的意思是定义Contacts
节点作为其父节点Contact
list?)
<Contacts>
.. <Contact>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)