2011-06-15 16 views
7

Tengo un XmlDocument que contiene una tabla XHTML. Me gustaría bucle a través de él para procesar las celdas de la tabla una fila a la vez, pero el código de abajo está devolviendo todas las células en el bucle anidado en lugar de sólo los de la fila actual:XPath: ¿cómo se seleccionan los elementos secundarios de un nodo?

XmlNodeList tableRows = xdoc.SelectNodes("//tr"); 
foreach (XmlElement tableRow in tableRows) 
{ 
    XmlNodeList tableCells = tableRow.SelectNodes("//td"); 
    foreach (XmlElement tableCell in tableCells) 
    { 
     // this loops through all the table cells in the XmlDocument, 
     // instead of just the table cells in the current row 
    } 
} 

Qué am Estoy haciendo mal? Gracias

Respuesta

13

Comience la ruta interna con un "." para indicar que quieres comenzar en el nodo actual. Un "/" de inicio siempre busca desde la raíz del documento xml, incluso si lo especifica en un subnodo.

Así:

XmlNodeList tableCells = tableRow.SelectNodes(".//td"); 

o incluso

XmlNodeList tableCells = tableRow.SelectNodes("./td"); 

como aquellos <td> s probablemente son directamente bajo que <tr>.

+0

Gracias, eso lo solucionó. – Nick

Cuestiones relacionadas