2012-05-29 9 views
6

Mam ten dokument XML i chcę wybrać węzły według atrybutów rozpoczynających się od "/ employees /".Jak wybrać węzły według atrybutów rozpoczynających się od ... w C#

<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> 

Więc w C#, chciałbym zrobić coś takiego:

parentNode.SelectNodes("//table/tr/th/a[@href='/employees/.....']") 

to możliwe z C#?

Dzięki!

+1

Czy możesz używać Linq do Xml? http://msdn.microsoft.com/en-us/library/bb387098.aspx –

Odpowiedz

17

Prosta starts-with funkcja robi to, czego potrzebujesz:

parentNode.SelectNodes("//table/tr/td/a[starts-with(@href, '/employees/')]") 
+2

P.S. LINQ? Blech .... –

3

przy użyciu czystego LINQ można zrobić coś takiego

var doc = XDocument.Parse("YOUR_XML_STRING"); 
var anchors = from e in doc. Descendants("a") where e.Attribute("href").Value.StartsWith("/employee/") select e; 

// teraz można seelect dowolnego węzła wykonując kombinację .Parent.Parent .....

1

Coś w tym stylu?

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); 
Powiązane problemy