我有一个包含4个不同字符串的XML文件,但是我无法反序列化该文件。有人可以帮我这个吗?
我在网上寻找答案,但没有一个有效,我不知道该怎么办。
以下是我尝试反序列化的XML文件:
<?xml version="1.0" encoding="utf-8"?>
<saveData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<strFolder1>1st Location</strFolder1>
<strFolder2>2nd Location</strFolder2>
<strTabName>newTab0</strTabName>
<strTabText>Main</strTabText>
</saveData>
答案 0 :(得分:2)
var ser = new XmlSerializer(typeof(saveData));
var obj = (saveData)ser.Deserialize(stream);
public class saveData
{
public string strFolder1;
public string strFolder2;
public string strTabName;
public string strTabText;
}
答案 1 :(得分:1)
我建议查看XmlReader。其他一些方法以不同的方式更容易,但您可以从XmlReader构建任何东西。如:
while(rdr.Read())
if(rdr.NodeType == XmlNodeType.Element)
switch(rdr.LocalName)
{
case "strFolder1":
strFolder1 = rdr.ReadContentAsString();
break;
case "strFolder2":
strFolder2 = rdr.ReadContentAsString();
break;
case "strTabName":
strTabName = rdr.ReadContentAsString();
break;
case "strTabText":
strTabText = rdr.ReadContentAsString();
break;
}
(如果保证订购的话,我们可以采取一些捷径,我很难做到表明艰难的方式并不那么难)。
使用XmlDocument,XmlSerializer和XDocument在很多情况下都比较容易,但我建议首先学习它,因为它可以处理所有事情并且效率从未降低。如果你先了解它,那么更糟糕的是你会做更多的工作而不是必要的工作,以获得比严格必要的更有效的东西(你将通过忽略更简单的方式进行微观优化)。如果你先了解其他人,那么更糟糕的是,你会做更多的工作而不是必要的工作,最终得到的效率低于所需的效率。
答案 2 :(得分:0)
namespace Cars1
{
public class saveData
{
public string strFolder1;
public string strFolder2;
public string strTabName;
public string strTabText;
}
[Serializable]
class Program
{
static void Main(string[] args)
{
saveData obj = new saveData();
FileStream fopen = new FileStream("abc.xml", FileMode.Open);
XmlSerializer x = new XmlSerializer(obj.GetType());
StreamReader read_from_xml = new StreamReader(fopen);
obj = (saveData)x.Deserialize(read_from_xml);
Console.WriteLine(obj.strFolder1 + "=>" + obj.strFolder2 + "=>" + obj.strTabName+"=>"+obj.strTabText);
Console.ReadKey();
fopen.Close();
}
}
}