代码之家  ›  专栏  ›  技术社区  ›  Jason Miesionczek

Linq2XML:简单的输入,有解决方案的大脑放屁

  •  0
  • Jason Miesionczek  · 技术社区  · 16 年前

    所以我有一个简单的XML文本:

    <errors xmlns="http://schemas.google.com/g/2005">
      <error>
        <domain>GData</domain>
        <code>InvalidRequestUriException</code>
        <internalReason>You must specify at least one metric</internalReason>
      </error>
    </errors>
    

    提取内部原因元素值的最简单方法是什么?

    1 回复  |  直到 16 年前
        1
  •  6
  •   Jon Skeet    16 年前

    在查找子体时需要指定命名空间。例如:

    var xml = XElement.Load("test.xml");
    XNamespace ns = "http://schemas.google.com/g/2005";
    var reason = xml.Descendants(ns + "internalReason").First().Value;
    

    或:

     var xml = XElement.Load("test.xml");
     XNamespace ns = "http://schemas.google.com/g/2005";
     var reason = xml.Elements(ns + "error").First()
                     .Elements(ns + "internalReason").First().Value;
    

    (当查询表达式没有提供任何额外值时,我并不热衷于使用它们。)

    您可能还想将其拆分并使用 FirstOrDefault 这样你就可以检查你要求的元素是否存在。