Xml Linq查找元素后的另一个元素
本文关键字:元素 另一个 Xml 查找 Linq | 更新日期: 2023-09-27 18:11:29
我在这里寻找这个很长一段时间,但我不能从其他代码得到它的工作。我需要找到最接近"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中编写机器人的答案。谢谢你的帮助
直接使用NextNode
Console.WriteLine(((XElement)pm.NextNode).Value);
但是不要忘记:尽管我从未见过反例,xml解析器并不保证元素的顺序。更好的方法是
<item>
<q>qusetion1</q>
<a>answer1</a>
</item>
<item>
<q>qusetion2</q>
<a>answer2</a>
</item>