2010-06-24 4 views
3

j'ai un fichier xml commeComment définir l'attribut à un élément XML à l'aide LINQ to XML en C#

<Root> 
     <Steps> 
      <Step Test="SampleTestOne" Status="Fail" /> 
      <Step Test="SampleTestTwo" Status="Fail" /> 
     </Steps> 
    </Root> 

je dois changer ou remplacer la valeur d'attribut de « Status » dans l'élément de l'étape.

Maintenant, je suis en utilisant XmlDocument pour cette comme

 XmlDocument XDoc = new XmlDocument(); 
     XDoc.Load(Application.StartupPath + "\\Sample.xml"); 
     XmlNodeList NodeList = XDoc.SelectNodes("//Steps/Step"); 
     foreach (XmlNode Node in NodeList) 
     { 
      XmlElement Elem = (XmlElement)Node; 
      String sTemp = Elem.GetAttribute("Test"); 
      if (sTemp == "SampleTestOne") 
       Elem.SetAttribute("Status", "Pass"); 

     } 

Je dois rechercher l'élément et mettre à jour le statut

est-il possible de le faire en utilisant XDocumentin C#

Merci à l'avance

Répondre

4
string filename = @"C:\Temp\demo.xml"; 
XDocument document = XDocument.Load(filename); 

var stepOnes = document.Descendants("Step").Where(e => e.Attribute("Test").Value == "SampleTestOne"); 
foreach (XElement element in stepOnes) 
{ 
    if (element.Attribute("Status") != null) 
     element.Attribute("Status").Value = "Pass"; 
    else 
     element.Add(new XAttribute("Status", "Pass")); 
} 

document.Save(filename); 
+0

@ Anthony Pegram: Merci. Si aucun attribut ("Status") n'existe, il lance une exception. Si aucun attribut de ce type n'existe, j'ai besoin de créer l'attribut, puis d'ajouter la valeur. S'il vous plaît Expliquez-moi moi aussi –

+0

@Pramodh, édité en. –

2

Vous pouvez utiliser ceci code:

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.Load(xmlFile); 
XmlNode node = xmlDoc.SelectSingleNode("Root/Steps/Step"); 
node.Attributes["Status"].Value = "True"; 
xmlDoc.Save(xmlFile); 
+0

Il veut une approche Linq, je suppose que c'est à des fins d'apprentissage, car il connaît d'autres moyens. –

+0

Oh, j'ai raté ça, merci – SageNS