Подтвердить что ты не робот

Что-то не так с моей библиотекой System.Xml.Linq?

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

using System.Xml.XPath;

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

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