2011-06-17 85 views
0

這是一個XML文檔的一部分:從XML節點檢索多個值(的XPath)

<directory level="Beginner"> 
    <cel row="0" column="0" visible="no">2</cel> 
</directory> 

我怎麼能準確地把那些3倍的值的字符串?

每次我的字符串都返回null。 Xpath的上的表達如下:

string xpath = "//directory[@level='" + directoryLevel+ "'] /cel[@row='" + amountOfRows + "' and @column='" + amountOfColumns+ "']"; 

誤差在某處圍繞「和」(第二屬性),因爲如果我離開的那部分字符串不是空了。

我到底該如何才能將列的值存入我的字符串以及導致此錯誤的原因是什麼?

最好的問候。

+1

究竟是你想要的結果字符串? –

回答

0

嘗試更換「和」與「] [」像這樣:

string xpath = "//directory[@level='" + directoryLevel+ "']/cel[@row='" + amountOfRows + "'][@column='" + amountOfColumns+ "']"; 
0

這似乎是有效的XPath所以我不知道是什麼問題。我測試與周圍的XML和靜態文本一點,是能夠建立以下XPath語句的正常工作:

//directory[@level='Beginner']/cel[(@row='0') and (@column='0')] 

可能的問題涉及到你的變量,而不是XPATH?您是否確定「amountOfRows」和「amountOfColumns」具有您期望的值?

+0

是的,因爲這些行在for循環中,並且列也以同樣的方式。初學者和2次0當我調試,但字符串說空。 – Dajing

0

看起來你的問題在別的地方。我寫了下面的代碼:

XmlDocument document = new XmlDocument(); 
document.LoadXml("<directory level=\"Beginner\"><cel row=\"0\" column=\"0\" visible=\"no\">2</cel></directory>"); 

string directoryLevel = "Beginner"; 
string amountOfRows = "0"; 
string amountOfColumns = "0"; 

string xpath = "//directory[@level='" + directoryLevel+ "']/cel[@row='" + amountOfRows + "' and @column='" + amountOfColumns+ "']"; 
XmlNode node = document.SelectSingleNode(xpath); 

Console.WriteLine(node.OuterXml); 

產量爲:

<cel row="0" column="0" visible="no">2</cel> 

結論:XPath表達式按預期工作。