How to change an attribute in a subrange in C #?

I want to change the value of the attribute (in this case "51") to "NextMemberId" in an XML file that looks like this:

<File>
  <MemberList>
    <NextMemberId Value="51" />
    <Member Id="1" ..... />
    <Member Id="2" ..... />
  </MemberList>
</File>

The following code works, but I would like to know if it can be done in a more direct way without having to start a foreach loop:

var memberId = 1;

var memberlist = Doc.DocumentElement.SelectSingleNode("MemberList");

foreach (XmlNode node in memberlist.ChildNodes)
{
  var nodeElement = node as XmlElement;
  if (nodeElement != null && nodeElement.Name == "NextMemberId")
  {
    nodeElement.SetAttribute("Value", memberId.ToString());
  }
}

Thanks for any inspiration!

+4
source share
2 answers

The correct way to get NextMemberIdfrom Fileaccording to your XML example:

var nodeElement = Doc.DocumentElement.SelectSingleNode("MemberList/NextMemberId");
nodeElement.SetAttribute("Value", memberId.ToString());

If there is more than one in your actual XML NextMemberIdand you need to filter the attribute Value, then you can add the XPath predicate, similar to what the other answer suggested:

var nodeElement = Doc.DocumentElement.SelectSingleNode("MemberList/NextMemberId[@Value=51");

, 51 , Value .

+2

node :

var nextMemberIdNode = Doc.DocumentElement.SelectSingleNode("NextMemberId[@Value='51']")
+1

Source: https://habr.com/ru/post/1673091/


All Articles