定位XML节点以更改值

时间:2013-09-05 21:40:52

标签: c# asp.net xml linq-to-xml

我有一个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
            }

然而,即使名称,姓氏和评级都在档案中,我也没有得到任何回报。

我做错了什么?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

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

相反,请使用XElement.Value“[获取]此元素的连接文本内容”。

答案 1 :(得分:1)

您需要使用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);