遍历XML节点

时间:2019-05-28 05:55:08

标签: c# xml uwp

我试图遍历节点并检查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 个答案:

答案 0 :(得分: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++;
}