通过linq检索和XDocuments属性值

时间:2014-04-14 11:30:34

标签: c# linq linq-to-xml

在这里找出正确的选择语句时遇到问题

我有以下XML

<configuration>
  <other sections>
  <runtime>
    <Binding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing Path="some path string" />
    </Binding>
    <Concurrent enabled="false" />
  </runtime>
  <other sections>
</configuration>

我试图在我检索路径字符串值的地方进行选择

到目前为止,我有这个

XDocument xdoc = XDocument.Load(XmlfilePath);

var query = (from c in xdoc.Descendants("probing")
where c.Attribute("Path") != null
select c.Attribute("Path").Value).FirstOrDefault();

但这不起作用,查询为空

1 个答案:

答案 0 :(得分:3)

因为您的属性名称为Path而不是privatePath。您也可以使用显式广告,然后您不需要进行空检查:

var query = (from c in xdoc.Descendants("probing")
             select (string)c.Attribute("Path")).FirstOrDefault();

更新:您的元素似乎有一个命名空间,因此您需要像这样指定命名空间:

XNamespace ns = "urn:schemas-microsoft-com:asm.v1";

var query = (from c in xdoc.Descendants(ns + "probing")
             select (string)c.Attribute("Path")).FirstOrDefault();

您可能需要查看文档以获取有关xml命名空间的更多详细信息:Working with XML Namespaces