我有这个xml文档,我希望按'/ employees /'开头的属性选择节点。
<table>
<tr>
<td>
<a href="/employees/1.html" title="Employee 1">Employee 1</a>
</td>
<td>Robert</td>
</tr>
<tr>
<td>
<a href="/employees/2.html" title="Employee 2">Employee 2</a>
</td>
<td>Jennifer</td>
</tr>
</table>
所以在C#中,我会做这样的事情:
parentNode.SelectNodes("//table/tr/th/a[@href='/employees/.....']")
C#可以实现吗?
谢谢!
答案 0 :(得分:21)
简单的starts-with
函数可以满足您的需求:
parentNode.SelectNodes("//table/tr/td/a[starts-with(@href, '/employees/')]")
答案 1 :(得分:3)
使用纯LINQ
你可以做这样的事情
var doc = XDocument.Parse("YOUR_XML_STRING");
var anchors = from e in doc. Descendants("a") where e.Attribute("href").Value.StartsWith("/employee/") select e;
//现在你可以通过组合.Parent.Parent .....
来选择任何节点答案 2 :(得分:1)
那么,这样的事情呢?
var xml = @"<table>
<tr>
<td>
<a href=""/employees/1.html"" title=""Employee 1"">Employee 1</a>
</td>
<td>Robert</td>
</tr>
<tr>
<td>
<a href=""/employees/2.html"" title=""Employee 2"">Employee 2</a>
</td>
<td>Jennifer</td>
</tr>
</table>";
var doc = new XmlDocument();
doc.LoadXml(xml);
var employees = doc.SelectNodes("/table/tr/td/a[starts-with(@href, '/employees/')]");
DoWhatever(employees);
答案 3 :(得分:0)
当然,您可以将XML加载到XDocument实例中,并使用XPathSelectElements方法使用您的表达式进行搜索。