Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从xml文件中选择随机节点_C#_Xml - Fatal编程技术网

C# 从xml文件中选择随机节点

C# 从xml文件中选择随机节点,c#,xml,C#,Xml,我的应用程序允许用户对着麦克风讲话,程序将与用户进行对话。我将响应保存在一个XML文件中,当用户讲话时,我希望程序签入XML文件并在它应该显示的部分中显示一个随机节点。以下是我的XML文件的外观: <?xml version="1.0" encoding="utf-8" ?> <MarcusXMLFile xmlns:Responses="http://www.rewardstrike.com/XMLFile1.xml""> <response>

我的应用程序允许用户对着麦克风讲话,程序将与用户进行对话。我将响应保存在一个XML文件中,当用户讲话时,我希望程序签入XML文件并在它应该显示的部分中显示一个随机节点。以下是我的XML文件的外观:

<?xml version="1.0" encoding="utf-8" ?>

<MarcusXMLFile xmlns:Responses="http://www.rewardstrike.com/XMLFile1.xml"">
  <response>
    <posanswer>
      <answer>Yes, sir.</answer>
      <answer>Right away.</answer>
    </posanswer>
  </response>
</MarcusXMLFile>

然而,当我对应用程序说话时,它会给我一个错误,说他应该说的文本为空。有什么想法吗?

你的第二个
响应。SelectNodes
找不到任何节点,因此
positiveresponses
没有节点,
foreach
循环没有可重复的内容,而且
响应
从未分配值

尝试更改:

XmlNodeList positiveresponses = Responses.SelectNodes("./posanswer/answer");
致:


您的异常处理不是最佳的。。很可能发生了一些有用的异常,但你完全忽略了它。catch{}这就像禁用孩子卧室中的烟雾探测器。这很有效。真不敢相信我也错过了0\u 0,我用来选择随机节点的方法是好的,还是有更好的方法?
case "Hello":
case "Hello Jarvis":        
     Responses();
     if (QEvent == "positiveresponse")
     {
              JMARCUS.Speak(response);
     }
     break;
XmlNodeList positiveresponses = Responses.SelectNodes("./posanswer/answer");
XmlNodeList positiveresponses
    = Responses.SelectNodes("MarcusXMLFile/response/posanswer/answer");