2011-11-20 23 views
2

想象一個XML文件是這樣的:只有當我知道關於後代的一些信息時才能獲得XPATH的值?

<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

回答

3

你可以使用這個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

這裏是XPath表達式來讀A:

/Document/Tests/Test[Subtest/Test/Name = 'B']/Name 
相關問題