XmlReader автоматически добавляет пространство имен ко всем элементам, делая невозможным чистые запросы linq - PullRequest
0 голосов
/ 29 марта 2012

Я запрашиваю фид gmail с помощью XmlReader и XDocument и сталкиваюсь с проблемами, связанными с автоматическими пространствами имен, добавляемыми ко всем элементам.

        XmlUrlResolver resolver = new XmlUrlResolver();
        resolver.Credentials = new NetworkCredential(username, password);

        XmlReaderSettings settings = new XmlReaderSettings();
        settings.XmlResolver = resolver;

        XmlReader reader = XmlReader.Create("https://mail.google.com/mail/feed/atom/", settings);

        XDocument doc = System.Xml.Linq.XDocument.Load(reader);

        var entries = from x in doc.Elements().First().Elements() where x.Name == "entry" select x;

В этом случае записи будут пустыми, потому что к всем элементам автоматически добавляется пространство имен. Если я изменю x.Name на x.Name.LocalName или namespace + x.Name, то это сработает.

Я бы хотел запретить XmlReader автоматически добавлять пространства имен и запрашивать xml, как он был первоначально отправлен мне - без пространств имен.

1 Ответ

1 голос
/ 29 марта 2012

Маловероятно, что XmlReader "автоматически добавляет пространства имен", поскольку обычно он никогда не изменяет содержимое XML. Я думаю, что все узлы уже имеют пространства имен (если вы разместите образец XML, это может быть подтверждено), так что вам придется иметь дело с этим.

Вы можете: просто использовать пространства имен или конвертировать XML, перемещая узлы в пространство имен по вашему выбору.

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