c# - WPF:未将对象引用设置为对象的实例

标签 c# wpf xmlnode

我正在使用 WPF 访问此方法。我知道当从外部方法访问对象时,我应该使用调度程序。或者“节点”是一个局部变量,它给我:

Object reference not set to an instance of an object.

为什么?

代码如下:

SpeechSynthesizer valery = new SpeechSynthesizer();
XmlDocument xmlNews = new XmlDocument();
xmlNews.Load(string.Format("http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&topic=tc&output=rss"));
foreach (XmlNode node in xmlNews.SelectNodes("/rss/channel/item"))
{
    valery.Speak(node.SelectSingleNode("/title").InnerXml);
}

最佳答案

老实说,我怀疑 node.SelectSingleNode 返回 null,这意味着尝试调用 InnerXml 正在触发异常。

尝试进行以下更改:

foreach (XmlNode node in xmlNews.SelectNodes("/rss/channel/item"))
{
    var titleNode = node.SelectSingleNode("/title");

    if (titleNode != null && !string.IsNullOrEmpty(titleNode.InnerXml))
        valery.Speak(titleNode.InnerXml);
}

我也对 InnerXml 进行了检查,以防 Speak 无法采用空字符串。

我最初并不怀疑 XPath,因为如果 XPath 找不到任何内容,这些方法将返回空集合而不是 null 项。

关于c# - WPF:未将对象引用设置为对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11668759/

相关文章:

c# - 将 HttpWebResponse 转换为 HttpResponse

c# - MVC 5错误页面未显示

c# - xamarin 在平板电脑和大屏幕中形成拉伸(stretch) View

c# - WPF DataGrid 上的拖放行行为

c# - 选择 XML 节点

XmlNode InnerXml 与 OuterXml

c# - Chrome 在下载时修改长文件名(使用 c# FileContentResult)

c# - 如何实现异步命令

c# - 如何创建其他可观察集合的可观察集合? MVVM 模式

c# - 比较 C# 中的两个 XmlNode