2012-08-10 18 views
8

Mam XML (to jest dokładnie jak to wygląda):jak zmienić węzeł XML wartości

<PolicyChangeSet schemaVersion="2.1" username="" description=""> 
    <Attachment name="" contentType=""> 
     <Description/> 
     <Location></Location> 
    </Attachment> 
</PolicyChangeSet> 

Jest na komputerze użytkownika.

Potrzebuję dodać wartości do każdego węzła: nazwa użytkownika, opis, nazwa załącznika, typ zawartości i lokalizacja.

To, co mam tak daleko:

string newValue = string.Empty; 
      XmlDocument xmlDoc = new XmlDocument(); 

      xmlDoc.Load(filePath); 
      XmlNode node = xmlDoc.SelectSingleNode("/PolicyChangeSet"); 
      node.Attributes["username"].Value = AppVars.Username; 
      node.Attributes["description"].Value = "Adding new .tiff image."; 
      node.Attributes["name"].Value = "POLICY"; 
      node.Attributes["contentType"].Value = "content Typeeee"; 

      //node.Attributes["location"].InnerText = "zzz"; 

      xmlDoc.Save(filePath); 

Każda pomoc?

Odpowiedz

13

Z XPath. XmlNode node = xmlDoc.SelectSingleNode("/PolicyChangeSet"); wybiera twój główny węzeł.

+1

który pracował :) ... mogę tylko przyjąć twoja odpowiedź za 10 minut. thx Jan! – Testifier

+0

Jak mogę jednak dodać wartość dla "lokalizacji"? to jest po prostu między <> ... ?? – Testifier

+0

Zawsze :) Spójrz na właściwość 'InnerText' XmlNode. – Jan

3

Got to z tego -

xmlDoc.Load(filePath); 
      XmlNode node = xmlDoc.SelectSingleNode("/PolicyChangeSet"); 
      node.Attributes["username"].Value = AppVars.Username; 
      node.Attributes["description"].Value = "Adding new .tiff image."; 

      node = xmlDoc.SelectSingleNode("/PolicyChangeSet/Attachment"); 
      node.Attributes["name"].Value = "POLICY"; 
      node.Attributes["contentType"].Value = "content Typeeee"; 
xmlDoc.Save(filePath); 
2

używać LINQ do XML :)

XDocument doc = XDocument.Load(path); 
IEnumerable<XElement> policyChangeSetCollection = doc.Elements("PolicyChangeSet"); 

foreach(XElement node in policyChangeSetCollection) 
{ 
    node.Attribute("username").SetValue(someVal1); 
    node.Attribute("description").SetValue(someVal2); 
    XElement attachment = node.Element("attachment"); 
    attachment.Attribute("name").SetValue(someVal3); 
    attachment.Attribute("contentType").SetValue(someVal4); 
} 

doc.Save(path); 
2
xmlDoc.SelectSingleNode("/PolicyChangeSet/Attachment/Description").InnerText = "My Desciption"; 
xmlDoc.SelectSingleNode("/PolicyChangeSet/Attachment/Location").InnerText = "My Location"; 
0
For setting value to XmlNode: 
XmlNode node = xmlDoc.SelectSingleNode("/PolicyChangeSet"); 
      node["username"].InnerText = AppVars.Username; 
      node["description"].InnerText = "Adding new .tiff image."; 
      node["name"].InnerText = "POLICY"; 
      node["contentType"].InnerText = "content Typeeee"; 

For Getting value to XmlNode: 
username=node["username"].InnerText 
Powiązane problemy