2009-05-17 2 views
3

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

ответ

4
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 Method будет делать трюк

+0

XmlNode не имеет какого-либо метода SetAttribute. Вместо этого вам нужно работать с XmlElement. – Grank

1

Возможно, что-то подобное может сработать для вас?

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

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

Marc

3

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

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

где дом является XmlDocument загружен с Xml.

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

foreach(XElement elem in doc.Descendents("Data")) 
{ 
    //do stuff to each elem. 
} 
1

Что-то вроде этого:

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); 
Смежные вопросы