我正在尝试解析多个后代,但不知道如何解析。
请参阅我的XML文档:
<root>
<withoutGroup>
<Id>123</tabId>
<Name>XYZ</tabName>
<Url>ABC.htm</tabUrl>
<Icon/>
</withoutGroup>
<group>
<groupId>789</groupId>
<groupName>TEST</groupName>
<row>
<Id>345</Id>
<Name>PQR</Name>
<Url>QWE.htm</Url>
<Icon/>
</row>
</group>
</root>
我想解析这些节点:
编号
名称
地址
图标
如何处理?
XDocument doc = XDocument.Parse(e.Result);
List<LIST> list = new List<LIST>();
list = (from query in doc.Descendants("group")
select new LIST
{
Id = Convert.ToInt64(query.Element("Id").Value),
Name = query.Element("Name").Value
}).ToList();
e.Result是我的XML文档
答案 0 :(得分:2)
如果我理解正确,您希望从此特定情况下的各种父元素名称(row
和withoutGroup
元素)中选择Id,Name,Url和Icon。这是一种可能的方式:
.......
//list all possible parent elements
var parentElements = new[] {"row", "withoutGroup"};
//get descendants having element name listed in parentElements variable
list = (from query in doc.Descendants()
.Where(o => parentElements.Contains(o.Name.LocalName))
select new LIST
{
Id = (long)query.Element("Id"),
Name = (string)query.Element("Name"),
Url = (string)query.Element("Url"),
Icon = (string)query.Element("Icon"),
}).ToList();
顺便说一句,您可以将XElement
直接投射到Operator部分中列出的某种类型,如上例所示。