7

我有这个 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# 实现吗?

谢谢!

4

4 回答 4

21

简单的starts-with功能可以满足您的需要:

parentNode.SelectNodes("//table/tr/td/a[starts-with(@href, '/employees/')]")
于 2012-05-29T14:49:39.313 回答
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 来选择任何节点.....

于 2012-05-29T14:49:34.980 回答
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);
于 2012-05-29T14:50:26.390 回答
0

当然,您可以将 XML 加载到XDocument实例中并使用XPathSelectElements方法使用您的表达式进行搜索。

于 2012-05-29T14:46:57.710 回答