【问题标题】:WPF: Object reference not set to an instance of an object [duplicate]WPF:对象引用未设置为对象的实例[重复]
【发布时间】:2012-07-26 11:56:11
【问题描述】:

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

对象引用未设置为对象的实例。

为什么?

这是代码:

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);
}

【问题讨论】:

  • xmlNews 是否分配给任何东西? valery 也是如此
  • XmlDocument xmlNews = new XmlDocument(); SpeechSynthesizer valery = new SpeechSynthesizer();
  • valery 可以为空,xmlNews 可以为空,node.SelectSingleNode 的结果可以为空。老实说,我怀疑是最后一个,这意味着尝试调用 InnerXml 正在触发异常。

标签: c# wpf xmlnode


【解决方案1】:

说实话,我怀疑 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 项。

【讨论】:

  • 你是对的! node.SelectSingleNode 返回 null 我将代码更改为 foreach(xmlNews.SelectNodes("/rss/channel/item/title") 中的 XmlNode 节点),它就像我想要的那样工作!谢谢!
【解决方案2】:

取出正斜杠,然后重试。见下文:

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);
}

这对我有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2021-12-03
    • 2013-11-17
    相关资源
    最近更新 更多