在LINQToXML中获取属性

时间:2014-09-02 06:33:39

标签: .net vb.net linq linq-to-xml

我有以下XML

<sss>
  <session status="true" reason="Any reason" />
  <employee name="abc" address="abc 123" isManager="false"/>
</sss>

我正在尝试使用以下LINQ查询访问reason属性的值:

 Dim results1 = (From r In document.Root.Elements("session").ToList()
                Select r).First()

results1.Attributes("reason")(0).Value

虽然我能够通过使用上面的语法来访问属性的值,但我有点困惑,为什么我必须在理由(如数组)前使用(0)因为结果是单个属性。

访问该值的任何备用选项,或在多行的情况下执行循环?

由于

2 个答案:

答案 0 :(得分:0)

鉴于您的XDocument

Dim document = <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
               <sss>
                  <session status="true" reason="Any reason" />
                  <employee name="abc" address="abc 123" isManager="false"/>
               </sss>

你可以简单地使用XML文字;不需要LINQ:

Dim reason = document.Root.<session>.@reason

reason现在是String,其值为Any reason


回答你的另一个问题:

您正在使用Attributes方法,该方法返回一组属性。如果您想获得单个元素,请改用Attribute方法。

答案 1 :(得分:0)

如果你想要第一个&#34; session&#34;的属性?元素,那么它可以如下获得:

Dim results1 = document.Descendants("session").First().Attribute("reason").Value