C# 从xml文件中选择随机节点
我的应用程序允许用户对着麦克风讲话,程序将与用户进行对话。我将响应保存在一个XML文件中,当用户讲话时,我希望程序签入XML文件并在它应该显示的部分中显示一个随机节点。以下是我的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 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");