我在这里寻找这个很长一段时间,但我无法通过其他代码来解决这个问题。我需要找到最接近“user”(即“robot”)的元素并写下它的值(它取决于用户的输入)。我正在编写一个聊天机器人。这是我的XML文件:
<Answers>
<user>This is a message</user><robot>Here is an answer</robot>
<user>This is another message</user><robot>Here is another answer</robot>
</Answers>
在C#代码中我尝试这样的事情:
private static void Main(string[] args)
{
XDocument doc = XDocument.Load("C:\\bot.xml");
var userPms = doc.Descendants("user");
var robotPm = doc.Descendants("robot");
string userInput = Console.ReadLine();
foreach (var pm in userPms.Where(pm => pm.Value == userInput))
{
Console.WriteLine // robotPm.FindNextTo(pm)
}
}
简单地说,我想比较控制台和xml中的“用户”输入,如果它们相等则从xml写入机器人的答案,负责指定的用户输入。 谢谢你的帮助
答案 0 :(得分:1)
只需使用NextNode
Console.WriteLine(((XElement)pm.NextNode).Value);
但不要忘记:尽管我从未见过反例,但xml解析器并不能保证元素的顺序。更好的方法是
<item>
<q>qusetion1</q>
<a>answer1</a>
</item>
<item>
<q>qusetion2</q>
<a>answer2</a>
</item>