c# - XDocument 未返回预期元素

标签 c# linq-to-xml

我已经做了研究并尝试了很多试验,但这让我难住了。我可能太笨了,但是考虑到以下 XML 文档,我如何才能最轻松地找到 UnitTestResult 元素?

<?xml version="1.0" encoding="UTF-8"?> 
<TestReport> 
   <TestRun id="5cbd568d-02e4-4003-96c7-3d82cc0c2060" name="neil@HP6550BTS2 2014-09-08 15:23:16" runUser="AS\neil" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2006">   
      <Results>
         <UnitTestResult executionId="c3194ea8-adec-4e50-a4b6-45e244c50963" testId="8e220518-d603-0136-5937-819380dd4738" testName="NewRowMatrixResourceBookingTest" computerName="HP6550BTS2" duration="00:00:00.0204886" startTime="2014-09-08T15:23:32.3595341+01:00" endTime="2014-09-08T15:23:33.8396821+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="2fc4d891-506d-45de-8c61-cf6aa44e8eb2">
            <Output>
            </Output>
         </UnitTestResult>
         <UnitTestResult executionId="c20b289e-4af5-4827-a35d-39360dec984a" testId="d48055d1-0a28-af07-4490-2bfca70dbbcf" testName="MatrixScreen_Checkout_NewScreenVersionLockedReason1" computerName="HP6550BTS2" duration="00:00:07.1635460" startTime="2014-09-08T15:23:33.8466828+01:00" endTime="2014-09-08T15:23:41.0143995+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="2fc4d891-506d-45de-8c61-cf6aa44e8eb2">
            <Output>
            </Output>
         </UnitTestResult>   
      </Results> 
   </TestRun> 
</TestReport>

我已经尝试过

xdoc.Descendants("UnitTestResult")

xdoc.Elements("TestReport").Elements("TestRun").Elements("Results").Elements("UnitTestResult")

还有

var ns = "http://microsoft.com/schemas/VisualStudio/TeamTest/2006";
var x = from result in testReport.Elements("TestReport").Elements(XName.Get(ns, "TestRun")).Elements("Results").Elements("UnitTestResult")

以及各种其他变体,但它们都会产生一个空枚举。

我做错了什么?

最佳答案

就这样怎么样

XNamespace ns = "http://microsoft.com/schemas/VisualStudio/TeamTest/2006";

yourXmlDocument.Descendants(ns + "UnitTestResult");

请注意 XNamespace 的显式定义,否则编译器会将类型推断为 string 而不是 XNamespace

关于c# - XDocument 未返回预期元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25745723/

相关文章:

c# - 如何将标签的字体颜色设置为与 GroupBox 的标题颜色相同?

c# - 删除 xml :base attribute from an XDocument

linq-to-xml - LINQ 到 XML : how to get collection of all attributes from all elements

C# 从 object.value 等于的列表中获取对象

c# - 在 C# 中,有没有一种方法可以使用短前缀而不是每个节点的完整命名空间来生成 XDocument?

c# - LinqToXml 未按预期处理可空元素

c# - 在 .NET 中从 XML 文档中过滤元素的最简单方法

c# - 确定两个 BackGroundWorker 字符串是否返回 true

c# - FindAll 与 Where 扩展方法

c# - 进行内容协商时不使用 SupportedMediaTypes