Перебор узлов XML

Я пытаюсь просмотреть узлы и проверить InnerText, чтобы определить, содержат ли они ключевое слово. У меня это работало в WPF, но я новичок в использовании UWP, и это вызывает у меня головную боль. Мы ценим любые предложения.

В настоящее время я получаю только ЗДЕСЬ: 0, поэтому я знаю, что он запускает цикл foreach. Должно появиться около 100 узлов.

В WPF я использовал это, которое отлично работало:

foreach (XmlNode node in nodeList)

Попытка этого в UWP, которая не работает:

foreach (IXmlNode node in nodeList)

Вот часть моего кода, с которой у меня проблемы:


var doc = new XmlDocument();

StorageFile tempFile = await ApplicationData.Current.LocalFolder.GetFileAsync("weatheralerts.xml");
                    String datas = await FileIO.ReadTextAsync(tempFile);

doc.LoadXml(datas);

var nodeList = doc.SelectNodesNS("/ns:feed/ns:entry", "xmlns:ns='http://www.w3.org/2005/Atom'");

var x = 0;

foreach (IXmlNode node in nodeList)
{
   Data1.Text = "HERE: " + x;
   x++;
}

Вы забыли опубликовать данные XML, но если вы используете тип System.Xml.XmlDocument вместо Windows.Data.Xml.Dom.XmlDocument, вы сможете использовать тот же код, что и в WPF.

mm8 28.05.2019 11:53

XML огромен по определению. Основная проблема, с которой я сталкиваюсь при использовании System.Xml, заключается в том, что я получаю эту ошибку: «XmlDocument» не содержит определения для «SelectNodes», и нет доступного метода расширения «SelectNodes», принимающего первый аргумент типа «XmlDocument». вам не хватает директивы using или ссылки на сборку?) Я получаю это из этого кода: System.Xml.XmlNodeList nodeList = doc.SelectNodes("/ns:feed/ns:entry", ns);

RogerJohnson 28.05.2019 12:51
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
135
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете System.Xml.XmlDocument вместо Windows.Data.Xml.Dom.XmlDocument, вы сможете использовать метод SelectNodes с XmlNamespaceManager:

var doc = new XmlDocument();

StorageFile tempFile = await ApplicationData.Current.LocalFolder.GetFileAsync("weatheralerts.xml");
String datas = await FileIO.ReadTextAsync(tempFile);

doc.LoadXml(datas);

var nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ns", "http://www.w3.org/2005/Atom");
var nodeList = doc.SelectNodes("/ns:feed/ns:entry", nsmgr);

var x = 0;
foreach (XmlNode node in nodeList)
{
    Data1.Text = "HERE: " + x;
    x++;
}

Я все еще получаю ту же ошибку: 'XmlDocument' does not contain a definition for 'SelectNodes' and no accessible extension method 'SelectNodes' accepting a first argument of type 'XmlDocument' could be found (are you missing a using directive or an assembly reference?)

RogerJohnson 28.05.2019 17:07

@RogerJohnson: вам нужно настроить обновление Fall Creators Update (сборка 16299) или более позднюю версию.

mm8 28.05.2019 17:20

Другие вопросы по теме