使用重复的节点模式解析XML
本文关键字:模式 XML 节点 | 更新日期: 2023-09-27 17:50:00
你能给我一些关于在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服务返回的数据,显然它的格式不是很好,因为嵌套没有正确地应用于每个不同的元素。是否有一种方法可以避免逐行解析和文本比较?
给你:
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();
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
}