2017-09-06 120 views
-2

值我有一個包含以下行檢索xml文檔C#

<string name="accept">Accept</string> 
<string name="action_settings">Settings</string> 
<string name="app_name">Val</string> 

我怎樣才能得到app_name字符串,它是在C#Val的值的XML文件。我試過XML解析器,但它不起作用。

+0

你試試這個:https://stackoverflow.com/questions/642293/how-do-i-read-and-parse- an-xml-file-in-c – louis12356

+0

向我們展示您的整個XML結構。你發佈的內容是不夠的。 –

+0

完整的XML包含相同的這樣的事情字符串名稱的東西和一些價值... –

回答

0

您可以在SelectSingleNode方法中使用XmlDocument和XPath語句來檢索此信息。下面是一個例子:

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(xml); 
var accept = doc.SelectSingleNode("//string[@name='accept']").InnerText; 
var actionSettings = doc.SelectSingleNode("//string[@name='action_settings']").InnerText; 
var appName = doc.SelectSingleNode("//string[@name='app_name']").InnerText; 

這裏被XPath語法的教程:https://www.w3schools.com/xml/xpath_syntax.asp

UPDATE:@喬恩 - 飛碟使用LINQ建議。如果您選擇這樣做,你的代碼可能看起來像:

var element = XElement.Parse(xml); 
var accept = element.Descendants("string").Where(x => x.Attribute("name").Value == "accept").Select(x => x.Value).FirstOrDefault(); 
var actionSettings = element.Descendants("string").Where(x => x.Attribute("name").Value == "action_settings").Select(x => x.Value).FirstOrDefault(); 
var appName = element.Descendants("string").Where(x => x.Attribute("name").Value == "app_name").Select(x => x.Value).FirstOrDefault(); 
+0

我會*強烈*鼓勵使用LINQ到XML而不是XmlDocument,並且只有在真正需要時才使用XPath - 我在這裏看到沒有任何好處。結果是繁瑣而易出錯的代碼。 –

+0

@JonSkeet LINQ也可以正常工作,我已經更新了包含該方法的代碼示例的響應。 –