Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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# 通过它获取节点';linqtoxml中的s属性_C#_Asp.net_Linq_C# 4.0_Linq To Xml - Fatal编程技术网

C# 通过它获取节点';linqtoxml中的s属性

C# 通过它获取节点';linqtoxml中的s属性,c#,asp.net,linq,c#-4.0,linq-to-xml,C#,Asp.net,Linq,C# 4.0,Linq To Xml,考虑以下HTML: <table> <tr> <td width="45%" align="right"> <h2>1.00 NZD</h2> </td> <td valign="top" align="center"> <h2>=</h2> </td> <td width="45%" align="

考虑以下HTML:

<table>
  <tr>
    <td width="45%" align="right">
      <h2>1.00 NZD</h2>
    </td> 
    <td valign="top" align="center">
      <h2>=</h2>
    </td> 
    <td width="45%" align="left">
      <h2>0.415528 GBP</h2>
    </td>
  </tr>
</table>
现在我想获取所有具有align=“right”的td,并编写以下代码:

var elementToChange = (from c in info.Elements("td")
                            where c.Attribute("align").Value == "right"
                            select c);


 Label1.Text = Server.HtmlEncode(elementToChange.First().ToString());
但我得到了这个错误:

序列不包含任何元素

问题在哪里

谢谢

您可以查找
“td”
元素,但在节点的顶层,您只能找到
“tr”
元素。这就是为什么你没有得到任何元素。试试这个:

from c in info.Elements("tr").Elements("td")
此外,在调用
First()
(或者使用
FirstOrDefault()
,如果没有元素,则返回null),您应该检查序列中是否有任何元素

如果您不知道路径,并且只希望所有
“td”
元素都具有该标记值,则还可以使用扩展方法:

from c in info.Descendants("td")

Elements
将在本例中为您提供根目录的直接子元素。您需要深入到要查找的元素,然后通过
Where
子句提取它们。在你的情况下,直系儿童是<代码> /代码> S.

谢谢它。但是我们不知道这条路。是否存在返回任何路径中的所有节点的方法?thta具有特定值的特定属性?@Kerezo是的,
子体
方法会这样做。请参阅我的编辑。
from c in info.Descendants("td")