我已经使用XmlNodeList找到了很多这样的例子,但遗憾的是WP7不支持这个,所以我有点难过。
我有一个看起来有点像这样的XML文档
<users>
<user id="50">
<username>testuser</username>
</user>
</users>
我需要能够将用户ID更改为其他值,并且还允许更改用户名。
我还希望能够删除用户ID为50的元素。
任何帮助都非常有用!
由于
答案 0 :(得分:2)
以下是一些不同的技术,全部使用XLinq(并在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");
}
}
答案 1 :(得分:0)
使用LINQ to XML。
将System.Xml.Linq
添加到您的参考文献中。
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();
}
}