J'ai un XML (c'est exactement à quoi ça ressemble):
<PolicyChangeSet schemaVersion="2.1" username="" description="">
<Attachment name="" contentType="">
<Description/>
<Location></Location>
</Attachment>
</PolicyChangeSet>
Ceci est sur la machine de l'utilisateur.
J'ai besoin d'ajouter des valeurs à chaque nœud: nom d'utilisateur, description, nom de pièce jointe, type de contenu et emplacement.
Voici ce que j'ai jusqu'à présent:
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);
De l'aide?
Avec XPath. XmlNode node = xmlDoc.SelectSingleNode("/PolicyChangeSet");
sélectionne votre nœud racine.
Compris avec ça -
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);
xmlDoc.SelectSingleNode("/PolicyChangeSet/Attachment/Description").InnerText = "My Desciption";
xmlDoc.SelectSingleNode("/PolicyChangeSet/Attachment/Location").InnerText = "My Location";
Utilisez LINQ To 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);
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
Dans votre méthode SelectSingleNode, vous devez fournir une expression XPath pour rechercher le nœud que vous souhaitez sélectionner. Si vous utilisez Google XPath, vous trouverez de nombreuses ressources à ce sujet.
http://www.csharp-examples.net/xml-nodes-by-name/
Si vous devez les ajouter à chaque nœud, vous pouvez commencer en haut et parcourir tous les enfants.
http://msdn.Microsoft.com/en-us/library/system.xml.xmlnode.aspx