2017-04-13 10 views
1

xmlのすべてのノードを読み取る必要があります。ループのないトップノードを読むのは問題ありませんが、すべてのノードを読み込んで各都市ごとに異なる温度を取得したいと思います。これまでforeachループでxml子ノードを読み取る

<servers> 
    <server name ="Stockholm"> 
    <!-- data from Google weather --> 
    <name>Stockholm (Google)</name><!--Läser denna rad för tillfället--> 
    <url>http://www.yr.no/place/sweden/stockholm/stockholm/forecast.xml</url> 
    <xpath>/weatherdata/forecast/tabular/time/temperature</xpath> 
    </server> 
    <server name ="Göteborg"> 
    <name>Göteborg (Google)</name> <url>http://www.yr.no/place/Sweden/V%C3%A4stra_G%C3%B6taland/Gothenburg/forecast.xml</url> 
    <xpath>/weatherdata/forecast/tabular/time/temperature</xpath> 
    </server> 
    <server name =" Malmö"> 
    <name>Malmö (Google)</name> 
    <url>http://www.yr.no/place/sweden/scania/malmö/forecast.xml</url> 
    <xpath>/weatherdata/forecast/tabular/time/temperature</xpath> 
    </server> 
</servers> 

マイコード:

XmlDocument serverDoc = new XmlDocument(); 
serverDoc.Load("ServerUrls.xml"); 
XmlNodeList xml = 
serverDoc.SelectNodes("servers/server"); 
foreach (var node in xml) 
{ 

} 

私はそのあまりを知っているこれはXMLです。しかし、私が適切に使うことができる情報は見つからないようです。 MSDNにあり、そこからそれを理解しようとしましたが、結果はありませんでした。

私が得ることができるすべてのヘルプに感謝します。

enter image description here

+0

次のステップは、別のXMLファイルに順番にリンク各都市の要素の値を取得することでしょう要素の値を使用してxmlファイルを解析し、実際の温度の読みを取得します。 – kennyzx

答えて

1

コメントで述べたように、あなたはXML内の温度を見つけるために、実際の温度が常駐XMLのURL、ならびに対応するXPathを取得する必要があります。その後、ロードXmlDocumentへのURLからXMLと実際の温度値を抽出するXPathを実行します。

foreach (XmlNode node in xml) 
{ 
    // get information needed to extract temprature i.e XML location, and the XPath : 
    var loc = node.SelectSingleNode("url").InnerText; 
    var xpath = node.SelectSingleNode("xpath").InnerText; 

    // get temperature information 
    var doc = new XmlDocument(); 
    doc.Load(loc); 
    var temperatures = doc.SelectNodes(xpath); 

    // iterate through temperatures and take action accordingly, f.e print the temperature 
    foreach(XmlNode temperature in temperatures) 
    { 
     Console.WriteLine(temperature.Attributes["value"].Value); 
    } 
} 
+0

ありがとうございます。あなたのソルティオもうまく働きます!私が理解できないもう一つの問題が発生しました。最初の1つの線量の下の2つの温度場が適切に再構築されます。それが何であるかはわかりません。何か?私の元の質問のPic。編集:背景は透明であるようです。 – AllramEst

+0

修正済み!だから問題ありませんもう一度ありがとう! – AllramEst

関連する問題