2010-11-27 4 views
0

J'ai trouvé beaucoup d'exemples de cela en utilisant XmlNodeList mais malheureusement WP7 ne supporte pas cela donc je suis un peu perplexe.Comment changer le contenu des éléments et des attributs

J'ai un document XML qui ressemble un peu à ce

<users> 
    <user id="50"> 
     <username>testuser</username> 
    </user> 
</users> 

Je dois être en mesure de changer l'ID utilisateur à une autre valeur et permettent également le nom d'utilisateur à modifier.

Je voudrais aussi pouvoir enlever l'élément avec l'identifiant d'utilisateur de 50 par exemple.

Toute aide est très appréciée!

Merci

Répondre

2

est ici quelques techniques différentes, tout en utilisant XLinq (et testé sur WP7):

string usersXml = @"<users><user id=""50""><username>testuser</username></user><user id=""51""><username>jamie_user</username></user></users>"; 

XElement doc = XElement.Parse(usersXml); 

// LINQ query syntax for find and removal 
// Add reference to System.Xml.Linq and add using System.Xml.Linq and using System.Linq 
var matchingUsers = from user in doc.Elements("user") 
        where (string)user.Attribute("id") == "50" 
        select user; 
// remvoing the users 
matchingUsers.Remove(); 

// another way to find the users... 
doc = XElement.Parse(usersXml); // reload for demo 
var matchingUsers2 = doc.Elements("user").Select(
    xUser => (string)xUser.Attribute("id") == "50"); 

// change the name 
doc = XElement.Parse(usersXml); // reload for demo 
matchingUsers = from user in doc.Elements("user") 
       where (string)user.Attribute("id") == "50" 
       select user; 

// replacing the name ... 
foreach (var user in matchingUsers) 
{ 
    var usernameElement = user.Element("username"); 
    if (usernameElement != null) { 
     usernameElement.SetValue("newUserName"); 
    }     
} 
+0

merci beaucoup :) – Jamie

0

Utilisez LINQ to XML.

Ajoutez System.Xml.Linq à vos références.

XElement users = XElement.Load("{file}"); 

foreach (var user in users.Nodes()) 
{ 
    if(user.Attribute("id") == 50) 
    { 
     user.Attribute("id") = 10; 
     user.Descendant("username") == "new User"; 
     //Or remove like this: 
     user.Remove(); 
    } 
} 
+0

Merci pour la réponse rapide, mais il jette l'erreur: ' 'System.Xml.Linq. XNode 'ne contient pas de définition pour' Attribute 'et aucune méthode d'extension' Attribute 'acceptant un premier argument de type' System.Xml.Linq.XNode 'n'a pu être trouvée' J'ai déjà System.Xml.Linq dans mes références. – Jamie

+0

Ma syntaxe peut être fausse, mais c'est le concept. –

+0

utilisez XAttribute pour silverlight – Viren

Questions connexes