2013-03-04 1 views
1

У меня есть файл XML, структура которого идет в соответствии с (частично)не в состоянии обработать XML-файл, который содержит пространство имен

<?xml version="1.0" encoding="UTF-8"?> 
    <TestRun id="ee3838c9-a7e2-4ddf-acb1-58589e39422d" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010"> 
     <TestSettings name="LocalSettings" id="e445106a-c672-4959-94d3-ec8cef9ac7e4"> 
     <Results> 
<UnitTestResult executionId="0e790a10-105f-44b1-a8f7-f72709651c17" testId="ae349466-4276-cfa9-908c-026a8589473b" testName="ValidateEmailAddressAndCompanyCode7" computerName="ACCUREVDEV" duration="00:00:41.4297842" startTime="2013-02-27T23:18:52.0238567-08:00" endTime="2013-02-27T23:19:34.0057439-08:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="0e790a10-105f-44b1-a8f7-f72709651c17"> 
</UnitTestResult> 
<UnitTestResult executionId="e9e7679d-fc39-43b7-a096-819f054a3795" testId="1a808be5-21a5-37c4-5892-2969707ae42f" testName="AccountExtensionSubscriptionWithOneMachineAndThreeSubscriptionsTest_withExpiredMachines" computerName="ACCUREVDEV" duration="00:00:56.1243356" startTime="2013-02-27T23:19:34.0174655-08:00" endTime="2013-02-27T23:20:30.8418287-08:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="e9e7679d-fc39-43b7-a096-819f054a3795"> 
</UnitTestResult> ............................. 
............................... 

Как можно понять, что есть пространство имен участвует

xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" 

Теперь, если я это делаю

string source = @"D:\23_18_43.trx"; 
XDocument xDoc = XDocument.Load(source);   
var xxxx = (from data in xDoc.Descendants("Results") 
      select data).Descendants("UnitTestResult").ToList(); 

Прибыль не имеет значения.

Принимая во внимание, что если я опускаю пространство имен и выполняю свою обработку, он работает.

Как я могу продолжить без явного удаления пространства имен из исходного файла? Можно ли это сделать программно?

Благодаря

ответ

2

Чтобы найти узел в XML с пространством имен по умолчанию, вам нужно еще искать для этого узла с использованием пространства имен.

Например.

XNamespace defaultNs = "http://microsoft.com/schemas/VisualStudio/TeamTest/2010"; 

, а затем в вашем «запросе»;

var xxxx = (from data in xDoc.Descendants(defaultNs + "Results") 
      select data).Descendants(defaultNs +"UnitTestResult").ToList(); 
Смежные вопросы