LINQ to XML: don't get XElement
本文关键字:get XElement to XML don LINQ | 更新日期: 2023-09-27 18:11:25
这应该很容易,但我真的没有看到我的错。
public static void Edit(string old, string neew, string type)
{
XElement root = XElement.Load(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "''Xml.xml");
switch (type)
{
case "Customer":
XElement name = root.Descendants("Data").Descendants("Customer")
.Where(x => x.Element("Name").Value.ToString() == old)
.FirstOrDefault();
name.SetElementValue("Name", neew);
break;
XElement name返回null,因此得到NullReferenceException。但我不知道,为什么它只返回null。
我的Xml结构:
<Data>
<Customer>
<Name>CustomerA</Name>
<IP>888.888.888.888</IP>
<UserLogin>auser</UserLogin>
<UserPw>apwd</UserPw>
</Customer>
<Customer>
<Name>CustomerB</Name>
<IP>102.16.70.181</IP>
<UserLogin>buser</UserLogin>
<UserPw>bpwd</UserPw>
</Customer>
</Data>
也许有人能让我睁开眼睛帮帮我?或者给点提示?
似乎Data
已经是您的根元素。您可以使用root.Elements("Customer")
或root.Descendants("Customer")
代替。
除此之外,XElement.Value
属性的类型是string
,所以你不需要调用ToString
对它。您还可以考虑使用显式强制转换,如(string)x.Element("Name") == old
,以避免在未找到元素时出现异常。