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中编写机器人的答案。谢谢你的帮助

Xml Linq查找元素后的另一个元素

直接使用NextNode

Console.WriteLine(((XElement)pm.NextNode).Value);

但是不要忘记:尽管我从未见过反例,xml解析器并不保证元素的顺序。更好的方法是

<item>
    <q>qusetion1</q>
    <a>answer1</a>
</item>
<item>
    <q>qusetion2</q>
    <a>answer2</a>
</item>