Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:无法从XML检索属性值_C#_.net_Xml - Fatal编程技术网

C#:无法从XML检索属性值

C#:无法从XML检索属性值,c#,.net,xml,C#,.net,Xml,有一个我想要更新的XML文档,但是为了更新,首先,我需要获取其中一个节点的id <?xml version="1.0" encoding="utf-8"?> <backupatmail> (... backups with id 0 & 1) <backup id="2"> <foldername>Dwa</foldername> <backupdate>16/10/201

有一个我想要更新的XML文档,但是为了更新,首先,我需要获取其中一个节点的id

<?xml version="1.0" encoding="utf-8"?>
  <backupatmail>
    (... backups with id 0 & 1)
    <backup id="2">
      <foldername>Dwa</foldername>
      <backupdate>16/10/2015</backupdate>
      <comment>comment will be set on UI</comment>
      <numberofparts>1</numberofparts>
      <lastsucceed></lastsucceed>
    </backup>
    (... backups with id 3 & 4)
  </backupatmail>
但是我不断得到一个未处理的异常,类型为“System.NullReferenceException”

你能告诉我那个明显的问题吗?;-)

另一件事是(我们称之为奖金问题):


如何在上述方法中添加另一个“where”条件?我需要非常确定这个id,所以我也考虑检查foldername属性。

foldername
不是一个属性,而是一个元素。这就是为什么在这里得到NullReferenceException
e.Attribute(“foldername”).Value
。正确的查询是

int lastId = (int)xdoc.Descendants("backup")
    .Where(b => (string)b.Element("foldername") == folderName)
    .Single().Attribute("id");

顺便说一句,您可以使用重载的
Single
运算符并删除
Where

int id = (int)xdoc.Descendants("backup")
        .Single(b => (string)b.Element("foldername") == foldername)
        .Attribute("id");

foldername
不是属性,而是元素。这就是为什么在这里得到NullReferenceException
e.Attribute(“foldername”).Value
。正确的查询是

int lastId = (int)xdoc.Descendants("backup")
    .Where(b => (string)b.Element("foldername") == folderName)
    .Single().Attribute("id");

顺便说一句,您可以使用重载的
Single
运算符并删除
Where

int id = (int)xdoc.Descendants("backup")
        .Single(b => (string)b.Element("foldername") == foldername)
        .Attribute("id");

谢谢工作就像魅力!所以我想,我需要理顺一下:backupatmail-root;备份节点;id(备份的)-属性;foldername-元素。我理解对了吗?尖括号中的所有内容都是元素。一切
blahblahblah=“…”
-都是属性。比我想象的要简单!再次感谢大家的支持!谢谢工作就像魅力!所以我想,我需要理顺一下:backupatmail-root;备份节点;id(备份的)-属性;foldername-元素。我理解对了吗?尖括号中的所有内容都是元素。一切
blahblahblah=“…”
-都是属性。比我想象的要简单!再次感谢大家的支持!