2017-06-27 98 views
1

您好,我需要從我的xml文件中提取特定的字符串。我該如何解決這個問題?我搜查了互聯網,但無法找到足夠具體的答案讓我理解。 ^^從xml文件讀取特定的字符串c#

我想用相應的GameName

繼承人我的xml文件

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<Game> 
    <entry> 
    <GameName>test</GameName> 
    <SavePath>C:\Users\allen\Downloads\GameOfLife\GameOfLife\obj\Debug\CoreCompileInputs.cache</SavePath> 
    <ExePath>C:\Users\allen\Downloads\GameOfLife\GameOfLife\obj\Debug\GameOfLife.exe</ExePath> 
    </entry> 
    <entry> 
    <GameName>test2</GameName> 
    <SavePath>C:\Users\allen\Downloads\GameOfLife\GameOfLife\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs</SavePath> 
    <ExePath>C:\Users\allen\Downloads\AdobeAIRInstaller.exe</ExePath> 
    </entry> 
</Game> 

,並在這裏把我的SavePath串的代碼中,我一直在試圖使用

var xmlStr = File.ReadAllText(Properties.Resources.docname); 
var str = XElement.Parse(xmlStr); 
var result = str.Elements("entry") 
    .Where(x => x.Element("GameName").Value.Equals(SelectGame_Combobox.Text)) 
    .Descendants("SavePath") 
    .ToString(); 
+2

當您運行現有的代碼,會發生什麼? – mjwills

+0

爲什麼你不能序列化它的對象? – Krishna

+0

還有上面的代碼編譯?因爲Where返回一個沒有後代的IEnumerable集合 – Krishna

回答

1

你幾乎在那裏。剛剛擺脫的ToString()所以它返回的XElement集合(只有一個,當然),然後你可以這樣說:

var result = str.Elements("entry"). 
    Where(x => x.Element("GameName").Value.Equals(search)).Descendants("SavePath"); 

string value = result.First().Value; 
+0

工作了一種享受,謝謝:) – Samuel