Цикл по узлам XML - PullRequest
       5

Цикл по узлам XML

0 голосов
/ 28 мая 2019

Я пытаюсь перебрать узлы и проверить 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++;
}

1 Ответ

1 голос
/ 28 мая 2019

Если вы используете 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++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...