Что-то не так с моей библиотекой System.Xml.Linq? - PullRequest
18 голосов
/ 03 апреля 2009

Я пытаюсь изучить некоторые вещи Linq to XML, и я наткнулся на функцию XPathSelectElement в XElement. Эта функция, кажется, делает то, что мне нужно, но по какой-то причине я не могу ее использовать! Проверьте мой код:

        XElement rootElement = XElement.Load(dataFile);
        XElement parentElement = rootElement.XPathSelectElement(xPath);

Я включил ссылки на System.Xml.Linq везде, где это необходимо. Все остальные вещи в этой библиотеке, которые я пробовал, похоже, работают, но XPathSelectElement даже не отображается в Intellisense в visual studio.

При создании кода выше я получаю следующую ошибку:

Ошибка 1 «System.Xml.Linq.XElement» не содержит определения для 'XPathSelectElement' и без расширения метод "XPathSelectElement" принимает первый аргумент типа System.Xml.Linq.XElement может быть найдено (вы пропустили использование директива или собрание ссылка?) C: \ PageHelpControl \ PageHelp.cs 155 50 HelpControl

Ответы [ 2 ]

53 голосов
/ 03 апреля 2009

Методы, которые вы пытаетесь использовать, являются ментодами расширения. Вам необходимо включить пространство имен System.Xml.XPath.

15 голосов
/ 03 апреля 2009

Просто, чтобы связать два ответа вместе ...

XPathSelectElement - это метод расширения. Чтобы использовать его как метод расширения (т. Е. Как если бы это был метод экземпляра в XNode), вам необходимо иметь директиву using в исходном коде для соответствующего пространства имен :

using System.Xml.XPath;

(Вот где живет класс Extensions, содержащий метод расширения.)

Это работает так же, как вам нужно using System.Linq; в вашем коде, прежде чем вы сможете использовать Select, Where и т. Д. На IEnumerable<T>.

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