2011-01-21 2 views
0

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

<?xml version="1.0" encoding="utf-8"standalone="yes"?> 
<WorkItem TimeZone="Mountain Standard" Offset="-07:00:00"> 
<RevisionFields> 
    <Field ReferenceName="OriginalTestEstimate" Name="Estimated Test" Type="Double"> 
    <Value>5</Value> 
    </Field> 
    <Field ReferenceName="RemainingDevWork" Name="Remaining Dev" Type="Double"> 
    <Value>9</Value> 
    </Field> 
    <Field ReferenceName="RemainingTestWork" Name="Remaining Test" Type="Double"> 
    <Value>5</Value> 
    </Field> 
... 

Служба, TFS, что я называю это дает мне как XmlDocument объекта. Я пытаюсь получить доступ к полям Value. Я могу использовать workItem["WorkItem"]["RevisionFields"], чтобы добраться до массива всех полей, но когда я пытаюсь добраться до определенного поля, используя эту нотацию, я застрял.

Поскольку «Name» установлен, я попытался с помощью этого (то есть workItem["WorkItem"]["RevisionFields"]["Remaining Test"], но это просто возвращает нуль.

Что мне нужно сделать, чтобы я мог получить непосредственно на значения в полях? (Я бы предпочел не придется перебирать все поля)

ответ

4

Вы можете использовать XPath для получения узла:..

 
/WorkItem/RevisionFields/Field[@Name='Remaining Test']/Value 

Посмотрите на SelectSingleNode() methodSelectNodes() method)

+0

Вы находитесь на правильном пути, но это все равно вернет XmlNodeList. – harpo

+0

@harpo: 'SelectSingleNode' возвращает' XmlNode'. Кроме того, я не вижу, что не так с 'XmlNodeList'. Насколько я понял, OP просто хочет избежать итерации * неинтересных * узлов вручную. – Tomalak

+0

@Tomalak, мой плохой. Как-то я читал это как требующий массив строк. – harpo

Смежные вопросы