XPath - как вы выбираете дочерние элементы узла? - PullRequest
9 голосов
/ 15 июня 2011

У меня есть XmlDocument, содержащий таблицу XHTML.Я хотел бы пройтись по нему, чтобы обрабатывать ячейки таблицы по одной строке за раз, но приведенный ниже код возвращает все ячейки во вложенном цикле, а не только ячейки для текущей строки:

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

Что я делаю неправильно?Спасибо

1 Ответ

15 голосов
/ 15 июня 2011

Начните внутренний путь с "." сигнализировать о том, что вы хотите начать с текущего узла. Начальный "/" всегда выполняет поиск в корне XML-документа, даже если вы указываете его на подузле.

Итак:

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

или даже

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

поскольку эти <td> s, вероятно, находятся непосредственно под этим <tr>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...