【发布时间】:2012-01-06 11:05:27
【问题描述】:
我有一个 XML 文件,其中包含 2 种类型的信息 - 由 SLvl 值确定的位置和工作类型。我希望将这些的 SearchTxt 值绑定到 2 个下拉列表(一个用于位置,一个用于工作类型),以用作我页面上的过滤器。
问题是我不能完全让我的 where 子句过滤 SLvl 值。使用 where 子句不返回任何结果。如果我删除它,查询会返回所有文本值。
C#
using System.Xml.Linq;
using System.Linq;
.....
// Loading from file
XDocument loaded = XDocument.Load(@"http://[LINKREMOVED]/vacancies.aspx");
// Query the data
var q = (from c in loaded.Descendants("items")
where c.Element("SLvl").ToString() == "0"
select c.Element("SearchTxt").ToString()).Distinct();
// Populate drop down
foreach(string name in q)
{
ddlLocation.Items.Add(new ListItem(name, name));
}
XML:
<VacancyMatch>
<items>
<SearchID>60</SearchID>
<SearchTxt>Scotland</SearchTxt>
<ParentID>0</ParentID>
<SearchCatID>1</SearchCatID>
<SLvl>1</SLvl>
<SubCat>1</SubCat>
</items>
<items>
<SearchID>92</SearchID>
<SearchTxt>Accounting</SearchTxt>
<ParentID>60</ParentID>
<SearchCatID>2</SearchCatID>
<SLvl>2</SLvl>
<SubCat>2</SubCat>
</items>
... More items here
</VacancyMatch>
我猜问题是数据在同一级别?这是我第一次使用 LINQ to XML,因此非常感谢任何帮助。 笔记: XML 由第三方提供,因此格式由他们决定。
【问题讨论】:
-
感谢大家的回答都很有帮助。似乎设置 .value 是解决方案。当我第一次尝试它时它不起作用:s,结果我没有任何 SLvl 0 的项目,1 是最低的。幸好没有人注意到我的愚蠢:)
-
我之前做过,很痛苦:)
标签: c# asp.net xml linq-to-xml