2017-06-27 7 views
1

こんにちは私はxmlファイルの特定の文字列を抽出する必要があります。どうすればこのことができますか?私はインターネットを検索したが、私が理解するのに十分な特定の答えを見つけることができない。 ^^私は、対応するGameNamexmlファイルから特定の文字列を読むc#

を使用して、私の関数savepath文字列を取得したい

がHERESにここに私の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> 

と私は

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はDescendentsを持たないIEnumerableコレクションを返すため、 – Krishna

答えて

1

を使用しようとしてきたコードですあなたはほとんどそこにいます。ただ、ToString()を取り除くので、それは(もちろん、ただ1)XElementのコレクションを返し、その後、あなたはこのようにそれを得ることができます:

、あなたの既存のコードを実行するとどうなり
var result = str.Elements("entry"). 
    Where(x => x.Element("GameName").Value.Equals(search)).Descendants("SavePath"); 

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

がありがとうございました。 – Samuel

関連する問題