Изменить узел XML - PullRequest
       5

Изменить узел XML

3 голосов
/ 17 мая 2009

У меня есть XML-документ, где XML-узел с определенным именем, скажем, «Данные», может появиться в любом месте XML-документа, т.е. в любой точке иерархии. Мне нужно прочитать эти узлы только с их именем и отредактировать атрибуты узла. Какой самый простой способ сделать это?

Ответы [ 4 ]

4 голосов
/ 17 мая 2009
XmlDocument doc = new XmlDocument();
doc.Load(@"Test.xml");
XmlNodeList elem = doc.GetElementsByTagName("Data");
foreach (XmlNode tag in elem)
{
 //do whatever you want to the attribute using SetAttribute method
}

Метод XmlElement.GetElementsByTagName сделает свое дело

3 голосов
/ 17 мая 2009

Используя XPath, вы можете найти все узлы данных с: -

foreach(XmlElement elem in dom.SelectNodes("//Data"))
{
    //do stuff to each elem.
}

где dom - это документ XmlDocument, загруженный вместе с вашим XML.

В качестве альтернативы, если вы предпочитаете XDocument: -

foreach(XElement elem in doc.Descendents("Data"))
{
    //do stuff to each elem.
}
1 голос
/ 17 мая 2009

Примерно так:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);

XmlNodeList nodes = xmlDoc.SelectNodes("//Data");
for (int i = 0; i < nodes.Count; i++)
{
    nodes[i].Attributes["somevalue"].Value = "edited";
}

xmlDoc.Save(fileName);
1 голос
/ 17 мая 2009

Может быть, что-то подобное может работать на вас?

XmlNodeList dataNodes = xmlDocument.SelectNodes('//Data')

foreach(XmlNode node in dataNodes)
{
  .. // do whatever you need to do
}

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...