请您介绍一下在C#中解析XML文档的最佳方法?
<RESPONSE>
<FNAME>user1</FNAME>
<LNAME>lastname1</LNAME>
<ADDRESS>
<LINE1>line 1 for user 1</LINE1>
<LINE2>line 2 for user 1</LINE2>
.....
.....
</ADDRESS>
<FNAME>user2</FNAME>
<LNAME>lastname2</LNAME>
<ADDRESS>
<LINE1>line 1 for user 2</LINE1>
<LINE2>line 2 for user 2</LINE2>
.....
.....
</ADDRESS>
</RESPONSE>
这是从在线XML服务返回的数据,它显然没有很好地形成,因为嵌套未适用于每个不同的元素。有没有办法可以避免逐行解析和文本比较?
答案 0 :(得分:2)
你走了:
XmlTextReader xml = new XmlTextReader("response.xml");
while (xml.Read())
{
switch (xml.NodeType)
{
case XmlNodeType.Element:
{
if (xml.Name == "RESPONSE") Console.WriteLine("Response: ");
if (xml.Name == "FNAME")
{
Console.Write("First Name: ");
}
if (xml.Name == "LNAME")
{
Console.Write("Last Name: ");
}
if (xml.Name == "ADDRESS") Console.WriteLine("Address: ");
if (xml.Name == "LINE1")
{
Console.Write("Line 1: ");
}
if (xml.Name == "LINE2")
{
Console.Write("Line 2: ");
}
}
break;
case XmlNodeType.Text:
{
Console.WriteLine(xml.Value);
}
break;
default: break;
}
}
Console.ReadKey();
答案 1 :(得分:2)
Linq to Xml是使用.NET
解析XML的现代方法以下代码段将为您提供对所有FNAME元素的访问权限
var doc = XDocument.Parse(xml);
foreach (var fname in doc.Root.Elements("FNAME") {
// fname.Value has the element value
}