2011-11-02 28 views
0

我想從使用XPath的xml文檔中選擇特定值。 xml存儲在一個字符串varibale「tmp」中。這個XML是在外部API上執行查詢的結果。從代碼後面的XPATH中選擇xml文檔對象的值(c#)

示例XML內容:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<Results> 
<Checks> 
<Check id="wbc"> 
<Linespeed>6000 </Linespeed> 
<Provider>BT WBC </Provider> 
</Check> 
<Check id="adsl"> 
<Linespeed>2048 </Linespeed> 
<Provider>BT ADSL </Provider> 
</Check> 
</Checks> 
</Results> 

在代碼中使用XPath後面我希望能夠選擇和只爲ID = ADSL,然後存儲在以後使用一個字符串變量的值。我想在不使用單獨的xslt樣式表的情況下實現這一點。

這是我對這個寫的代碼,但我得到了一個錯誤:

//Creating an XPATH epression 
String strExpression1; 
strExpression1 = "Results/Checks/Check[@id = 'adsl']/Linespeed"; 

//Loading the xml document 
XmlDocument doc; 
doc = new XmlDocument(); 
doc.LoadXml(tmp); 

//Create an XmlNamespaceManager to resolve the default namespace. 
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); 
nsmgr.AddNamespace("bk", "urn:schemas-microsoft-com:xslt"); 

//Selecting Linespeed from Check id='adsl' 
XmlNode Check; 
XmlElement root = doc.DocumentElement; 
Check = root.SelectSingleNode(strExpression1, nsmgr); 

//Assigning the the results of the XPATH expression to the variable Linespeedval 
string Linespeedval = Check.ToString(); 

//Adding a control to display the xpath results of the "tmp" xml objectt 
AvailabilityCheckerResults2.Controls.Add(new LiteralControl(Linespeedval)); 

任何援助將greately感激!提前致謝!

+0

什麼問題? – iraSenthil

+0

我得不到任何輸出,但代之以典型的共享點錯誤。我調試了代碼並將「tmp」xml文檔讀取存儲到根對象中。這個問題似乎與XmlNode檢查。沒有分配給它,並且更多沒有分配給字符串Linespeedval。這應該在理論上起作用,但有沒有更好或更簡單的方法來實現這一目標?謝謝 –

回答

1
strExpression1 = "/Results/Checks/Check[@id = 'adsl']/Linespeed"; 
//or strExpression1 = "//Checks/Check[@id = 'adsl']/Linespeed"; 
//doc has no namespace 
Check = root.SelectSingleNode(strExpression1); 
.... 
string Linespeedval = Check.InnerText; 
+0

非常感謝您這樣做!非常感謝 –

+0

不客氣。 – BLUEPIXY

相關問題