我有想要获取一些数据的xml
XDocument loaded = XDocument.Load(@"c:\TERC.xml");
var query = (from c in loaded.Descendants("catalog")
from r in c.Descendants("row")
select (string)r.Element("Name"));
这会返回null
的集合我该如何解决?
这是xml:
<?xml version="1.0" encoding="UTF-8" ?>
<teryt>
<catalog name="Compix">
<row>
<col name="NAME">Name1</col>
<col name="ID">12</col>
</row>
<row>
<col name="NAME">Name2</col>
<col name="ID">13</col>
</row>
<row>
<col name="NAME">Name3</col>
<col name="ID">14</col>
</row>
</catalog>
</teryt>
答案 0 :(得分:2)
List<string> query = (from c in loaded.Descendants("catalog")
from r in c.Descendants("row")
from col in r.Descendants("col").Where(col1 =>
col1.Attribute(XName.Get("name")).Value == "NAME")
select col.Value).ToList();
执行上述语句后,query
包含以下字符串:
Name1
Name2
Name3
答案 1 :(得分:1)
你可能想试试这个:
var query = (from c in loaded.Descendants("catalog")
from r in c.Descendants("row")
select (string)r.Value);
我假设您想要获取“col”节点内的数据。否则,请准确检查您要检索的内容。
希望这有帮助。
答案 2 :(得分:1)
名称是您想要值的col
元素的属性,该部分在查询中缺失。
var query = (from c in loaded.Descendants("catalog")
from r in c.Descendants("row")
from col in r.Descendants("col")
select (string)r.Value).ToList<string>();