2017-10-15 27 views
-1

「端末ID」と「現在の設定」の項目の値を取得して変数に割り当てようとしています。C#xmlファイルを読み込み、値を変数に代入する

私はインターネット上でさまざまな例を見つけましたが、私が望む結果は誰も見つかりませんでした。

XMLファイル:

<TerminalOverview xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Bmt.BmtSharp.WebInterface.Backend.API.App.Home.Model"> 
    <InfoItems> 
    <InfoItem> 
     <Name>Device name</Name> 
     <Value/> 
    </InfoItem> 
    <InfoItem> 
     <Name>Terminal ID</Name> 
     <Value>253896528</Value> 
    </InfoItem> 
    <InfoItem> 
     <Name>Current Configuration</Name> 
     <Value>BmtVersion - 1.1.32</Value> 
    </InfoItem> 
    <InfoItem> 
     <Name>Local Time</Name> 
     <Value>15/10/2017 13:58:14</Value> 
    </InfoItem> 
    <InfoItem> 
     <Name>Time zone</Name> 
     <Value>Amsterdam</Value> 
    </InfoItem> 
    </InfoItems> 
    <Message xmlns="http://schemas.datacontract.org/2004/07/Bmt.BmtSharp.WebInterface.Backend.API.Common.Models" i:nil="true"/> 
    <Success xmlns="http://schemas.datacontract.org/2004/07/Bmt.BmtSharp.WebInterface.Backend.API.Common.Models">true</Success> 
</TerminalOverview> 

私は、「端末ID」の値が変数terminalID、変数softwareVersionに割り当てられる「現在の設定」の値に割り当てることにしたいです。

どうすればこの問題を解決できますか?

+0

[文字列内のXMLノード値を取得する方法](https://stackoverflow.com/questions/17590182/how-to-get-the-xml-node-value-in-stringの可能性のある重複) – Alexander

+0

多くの例が見つかりましたが、何も望んでいないのはどういう意味ですか?あなたはxmlノードを読む場所のコードを表示できますか? –

答えて

0

以下のコードはすべての項目を辞書に入れます。その後、辞書からIDと設定を取得できます。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Xml; 
using System.Xml.Linq; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     const string FILEMNAME = @"c:\temp\test.xml"; 
     static void Main(string[] args) 
     { 
      XDocument doc = XDocument.Load(FILEMNAME); 

      XElement root = doc.Root; 
      XNamespace ns = root.GetDefaultNamespace(); 

      Dictionary<string, string> dict = root.Descendants(ns + "InfoItem") 
       .GroupBy(x => (string)x.Element(ns + "Name"), y => (string)y.Element(ns + "Value")) 
       .ToDictionary(x => x.Key, y => y.FirstOrDefault()); 
     } 
    } 
} 
関連する問題