我想解析XML文件并将此信息保存到对象中。做这个的最好方式是什么?请告诉我。
谢谢..
答案 0 :(得分:8)
您可以使用XmlSerializer对其进行反序列化。
using System;
using System.IO;
using System.Xml.Serialization;
[XmlRoot("Root")]
public class MyType
{
[XmlElement("Id")]
public string Id { get; set; }
[XmlElement("Name")]
public string Name { get; set; }
}
static class Program
{
static void Main()
{
string xml = @"<Root>
<Id>1</Id>
<Name>The Name</Name>
</Root>";
MyType obj = (MyType) new XmlSerializer(typeof(MyType))
.Deserialize(new StringReader(xml));
Console.WriteLine(obj.Id);
Console.WriteLine(obj.Name);
}
};
答案 1 :(得分:5)
如果您使用的是.Net 3.5,我建议使用LINQ-To-XML。
一个简单的例子......
XML文件
<?xml version="1.0" ?>
<People>
<Person>
<Name> ABC </Name>
<SSN> 111111 </SSN>
<Address> asdfg </Address>
</Person>
</People>
LINQ查询
XDocument doc = XDocument.Load(pathToFile);
var query = from d in doc.Root.Descendants("Person")
select d;
foreach (var q in query)
{
string name = q.Element("Name").Value;
string ssn = q.Element("SSN").Value;
string address = q.Element("Address").Value;
}
答案 2 :(得分:1)
此方法优于其他方法的优点是您获得了一个强类型对象(以及IntelliSense处理您的对象)。除此之外,它意味着“节点查找”比其他解决方案(主要使用字典)更快。
或者您可以尝试使用C#4.0的动态关键字,它可以让您选择避免生成代码并在运行时反序列化。虽然我不确定。这样你就失去了强大的输入,但保留了语法。