以 XML 节点为目标以更改值

本文关键字:XML 节点 目标 | 更新日期: 2023-09-27 18:30:16

我有一个XML文件如下:-

<Root>
   <Player>
      <name>Name</name>
      <surname>Surname</surname>
      <rating>10</rating>
   </Player>
   <Player>
      <name>Name1</name>
      <surname>Surname1</surname>
      <rating>20</rating>
   </Player>
</Root>

现在,我希望以这些节点之一为目标,以便可以对其进行一些更改。

我有以下代码:-

                XElement playerXML =
                doc.Root.Elements("Player").FirstOrDefault(x => x.Element("name").ToString() == playerInput.name
                                                                && x.Element("surname").ToString() == playerInput.surname
                                                                && Convert.ToInt32(x.Element("rating"))  == playerInput.rating);
            if (playerXML != null)
            {
                //do processing
            }

但是,即使姓名,姓氏和评级在文件中,我也没有得到任何回报。

我做错了什么?

感谢您的帮助

以 XML 节点为目标以更改值

问题是XElement/XNode.ToString返回包含元素标记的 XML

相反,使用 XElement.Value 来"[获取]此元素的串联文本内容"。

您需要

使用XElement.Value属性而不是调用ToString()方法。

doc.Root.Elements("Player").FirstOrDefault(x => x.Element("name").Value == playerInput.name
                                                                && x.Element("surname").Value == playerInput.surname
                                                                && Convert.ToInt32(x.Element("rating").Value) == playerInput.rating);