Исходя из вашего ответа на мой комментарий и вашей уверенности в вопросе о том, что вы хотите выбрать узлы по индексу, вот простой способ получить его.Предполагая, что у вашего XML
есть несколько DR
(без имен или других средств для их идентификации).Я использую XPATH
здесь, потому что в вашем случае это может быть проще, чем LINQ.
При условии, что XML:
<Hospital>
<DR>
<Salary>1000</Salary>
<bonus> 3 </bonus>
</DR>
<DR>
<Salary>2000</Salary>
<bonus> 7 </bonus>
</DR>
<Nurse>
<Shift> </Shift>
</Nurse>
</Hospital>
Вы можете выбрать второй узел, используя XPATH, следующим образом:
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xmlString);
XPathNavigator navigator = xmlDocument.CreateNavigator();
XPathNavigator node = navigator.SelectSingleNode("/Hospital/DR[2]/Salary");
if (node != null)
node.SetValue("new salary");
Обратите внимание, что индекс Xpath [] основан на 1, а не на 0.Поэтому DR [2] выбирает второй узел.
РЕДАКТИРОВАТЬ :
И в ответ на ваш второй вопрос, если у вас есть атрибут name
вэлемент DR
.Вы можете получить и обновить это значение так же, как и в предыдущем примере, все, что вам нужно изменить - это Xpath, указывающий на этот атрибут, как таковой:
/Hospital/DR[2]/@name