Мое приложение позволяет пользователю говорить в микрофон, и программа будет разговаривать с пользователем. У меня есть ответы, сохраненные в XML-файле, и когда пользователь разговаривает, я хочу, чтобы программа проверила файл 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>
Мой код для выбора случайного узла является:
private void Responses()
{
string query = String.Format("http://www.rewardstrike.com/XMLFile1.xml");
XmlDocument Responses = new XmlDocument();
Responses.Load(query);
XmlNode channel = Responses.SelectSingleNode("MarcusXMLFile");
XmlNodeList nodes = Responses.SelectNodes("MarcusXMLFile/response");
try
{
XmlNodeList positiveresponses = Responses.SelectNodes("./posanswer/answer");
foreach (XmlNode ans in positiveresponses.Cast<XmlNode>().OrderBy(elem => Guid.NewGuid()))
{
response = ans.InnerText;
}
QEvent = "positiveresponse";
}
catch { }
}
И мой код для вызова события является:
case "Hello":
case "Hello Jarvis":
Responses();
if (QEvent == "positiveresponse")
{
JMARCUS.Speak(response);
}
break;
Однако , когда я говорю с приложением, это дает мне ошибку, говоря текст, который он должен говорить в нуле. Есть идеи?
Вашей обработка исключений не является оптимальной .. скорее всего, есть некоторое полезное исключение происходит, но вы полностью игнорировать ее. –
catch {} Это похоже на отключение детекторов дыма в спальне вашего ребенка. –