在只有我对它的后代有所了解的情况下获取XPATH值

本文关键字:了解 情况下 获取 XPATH 后代 有我 | 更新日期: 2023-09-27 18:15:11

想象一个这样的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文件中(docXmlDocument):

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 ?

在只有我对它的后代有所了解的情况下获取XPATH值

您可以使用这个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;

下面是读取A的xpath表达式:

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