получить значение в XPATH, когда только я знаю что-то об этом потомки? - PullRequest
2 голосов
/ 20 ноября 2011

Представьте себе xml-файл, подобный следующему:

<Document>
   <Tests>
      <Test>
          <Name>A</Name>
          <SubTest>
              <Test>
                 <Name>B</Name>
                 <Value>100</Value>
              </Test>
           </SubTest>
       </Test>
      <Test>
          <Name>C</Name>
          <SubTest>
              <Test>
                 <Name>D</Name>
                 <Value>200</Value>
              </Test>
           </SubTest>
       </Test>
    </Tests> 
</Document>

Я использую метод для доступа к значению B, но мне также нужно получить имя A, но я только теперь это значение B существует в моем XML-файле (doc is XmlDocument):

public class TestData
{
public string Parent {get;set;}
public string Name {get; set;}
public int Value {get;set;} 
}

private TestData GetResult(string name)
{
   TestData data = new TestData();
   data.Name = name;
   data.Value = 
   int.Parse(doc.SelectSingleNode("Document/Tests/Test/SubTest/Test[Name = '" + name + "']/Value").InnerText);

   data.Parent = null; //How can I get string A using the above xpath   

   return data;
}

Итак, вопрос в том, как я могу получить доступ к A в вышеуказанном методе?

Ответы [ 2 ]

3 голосов
/ 20 ноября 2011

Вы можете использовать этот XPath:

Document/Tests/Test[SubTest/Test/Name = 'B']/Name

или:

var nodeTest = 
    doc.SelectSingleNode("Document/Tests/Test[SubTest/Test/Name = 'B']");

var name = nodeTest.SelectSingleNode("Name").InnerText;
var value = nodeTest.SelectSingleNode("SubTest/Test/Value").InnerText;
2 голосов
/ 21 ноября 2011

Вот выражение xpath для чтения A:

/Document/Tests/Test[Subtest/Test/Name = 'B']/Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...