【问题标题】:Looping through XML nodes循环通过 XML 节点
【发布时间】:2019-05-28 05:55:07
【问题描述】:

我正在尝试遍历节点并检查 InnerText 以确定它们是否包含关键字。我有这个在 WPF 中工作,但我是使用 UWP 的新手,这让我很头疼。任何建议将不胜感激。

我目前只得到 HERE: 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 中一样使用相同的代码。
  • XML 的定义非常庞大。使用 System.Xml 时遇到的主要问题是我收到此错误:“XmlDocument”不包含“SelectNodes”的定义,并且找不到接受“XmlDocument”类型的第一个参数的可访问扩展方法“SelectNodes”(是您缺少 using 指令或程序集引用?)我从以下代码中得到: System.Xml.XmlNodeList nodeList = doc.SelectNodes("/ns:feed/ns:entry", ns);

标签: c# xml uwp


【解决方案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:您需要针对 Fall Creators Update(Build 16299)或更高版本。
猜你喜欢
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多