所以我有这个简单的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>
Run Code Online (Sandbox Code Playgroud)
提取internalReason元素值的最简单方法是什么?
您需要在查找后代时指定命名空间.例如:
var xml = XElement.Load("test.xml");
XNamespace ns = "http://schemas.google.com/g/2005";
var reason = xml.Descendants(ns + "internalReason").First().Value;
Run Code Online (Sandbox Code Playgroud)
要么:
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;
Run Code Online (Sandbox Code Playgroud)
(当我们没有提供任何额外的值时,我并不热衷于使用查询表达式.)
您可能还想将其拆分并使用,FirstOrDefault以便检查您要求的元素是否存在.