どうすればXMLからこのvaueを取得できますか?

私はこのXMLを持っています:


    
        2861
        Foppolo
        BG
        0
        LOMBARDIA
        
            6
            temporali isolati
            2
            1024.3
            78
            3000 m
            ND
            ESE
            4 nodi
            3
            0-10mm
        
        
            6
            temporali isolati
            11
            1024.9
            46
            3550 m
            ND
            SSO
            3 nodi
            3
            0-10mm
        

        ... xml continues...

C#の第2ノード previsione から値 temp を抽出したいと思います。

試してみる:

using (var wc = new WebClient())
{
    m_strFilePath = wc.DownloadString(xmlMeteo);
}

XmlDocument myXmlDocument = new XmlDocument();
myXmlDocument.LoadXml(m_strFilePath);

try
{
    Response.Write("Value : " + myXmlDocument.SelectSingleNode("//previsione[position()=0]//temp").Value);
}
catch { }   

しかし私はそれを得ることができません。

1
有効な//プリビジョン[position()= 2]/temp
追加された 著者 BLUEPIXY,

3 答え

クエリを次のように変更してみてください。

"//previsione[2]/temp"

.Value .InnerText value.aspx "rel =" nofollow "> .Value には実際の値はほとんどありません

[2] 2番目のアイテムを取得する必要があります。 /temp は "temp"という名前の子要素を意味します。

3
追加された
試しました。何も.. :(
追加された 著者 markzzz,
うん、それは動作するようです!どの言語を使ってこの値をクエリしていますか?これはXPathではありません...
追加された 著者 markzzz,
@markzzz編集を参照してください。
追加された 著者 Marc Gravell,
@markzzzはいそうです。 1.0仕様、セクション2.5;短縮形構文;直接リンク: w3.org/TR/xpath/#path-abbrev
追加された 著者 Marc Gravell,

あなたのXPath文字列が間違っているように見えます。二重スラッシュ( "//")は、それが得られた場所で使用すると、子孫を取得することです(PHP "rel =" nofollow "> http://www.tizag.com/xmlTutorial/xpathdescendant.php )。

スラッシュを1つだけ試してみてください

//previsione[2]/temp

また、 - XSLT要素はゼロベースではないので、要素はpos = 1で始まります

ここで私が見つけたウェブサイトは、xPathの文字列を取得するのに最適です。 !

http://xmltoolbox.appspot.com/index.html

1
追加された
それは動作しません...
追加された 著者 markzzz,
編集を参照してください - 申し訳ありません私はあなたが2番目の要素が欲しいと言っている部分を読んで逃した!それを指摘する@Marc Gravellに感謝します!
追加された 著者 Stuart.Sklinar,

XPathのノード位置は0ではなく1に基づいています。試してみてください:

myXmlDocument.SelectSingleNode("//previsione[2]/temp/text()").Value;
1
追加された