2011-11-10 2 views
0

XMLファイルからデータを読み取るアプリケーションの部分を更新しようとしています。現時点では私はXPATHを使用していますが、私はLINQに更新したいと思います。XPATHからLINQへの移行には、ヘルプが必要ですか?

単純なXPATHクエリでは、1つの値しか取得する必要はありませんが、問題はありません。私はここでLINQの使い方を理解できません。あなたはいくつかのアイデアを与えることができればいいだろう。

public ContinuityData GetSingleContinuityResult(string pin) 
    { 
     ContinuityData data; 

     data = new ContinuityData(); 

     data.PinName = pin; 

     data.PreVoltage = double.Parse(ztr.SelectSingleNode("/Document/Tests/Test[contains(Name, 'Pre Continuity')]/Groups/Group/Pins/Pin[Number='" + pin + "']/Spots/Spot/VIPair/Voltage").InnerText, CultureInfo.InvariantCulture); 
     data.PreCurrent = double.Parse(ztr.SelectSingleNode("/Document/Tests/Test[contains(Name, 'Pre Continuity')]/Groups/Group/Pins/Pin[Number='" + pin + "']/Spots/Spot/VIPair/Current").InnerText, CultureInfo.InvariantCulture); 

     data.PostVoltage = double.Parse(ztr.SelectSingleNode("/Document/Tests/Test[contains(Name, 'Post Continuity')]/Groups/Group/Pins/Pin[Number='" + pin + "']/Spots/Spot/VIPair/Voltage").InnerText, CultureInfo.InvariantCulture); 
     data.PostCurrent = double.Parse(ztr.SelectSingleNode("/Document/Tests/Test[contains(Name, 'Post Continuity')]/Groups/Group/Pins/Pin[Number='" + pin + "']/Spots/Spot/VIPair/Current").InnerText, CultureInfo.InvariantCulture); 

     return data; 
    } 

ztrXmlDocumentインスタンスであることに留意されたいです。もしそれトラブルこれを理解するには、依頼することを躊躇しないでください場合は、この

public ContinuityData GetSingleContinuityResult(string pin) 
{ 
    ContinuityData data; 

    data = new ContinuityData(); 

    data.PinName = pin; 

    XElement xtr = XElement.Load("path/to/your/xml/file"); 

    Func<string, string, string, double> getViData = 
     (testName, pin, mode) => 
     Convert.ToDouble(
      xtr 
       .Descendants("Test") 
       .Where(test => test.Descendants("Name") 
            .First().Value.Contains(testName)) 
       .Descendants("Pin") 
       .Where(p => p.Descendants("Number") 
           .First().Value == pin) 
       .Descendants("VIPair") 
       .Descendants(mode) 
       .First().Value); 

    data.PreVoltage = getViData("Pre Continuity", pin, "Voltage"); 
    data.PreCurrent = getViData("Pre Continuity", pin, "Current"); 

    data.PostCurrent = getViData("Post Continuity", pin, "Current"); 
    data.PostVoltage = getViData("Post Continuity", pin, "Voltage"); 

    return data; 
} 

を試してみてください enter image description here

+0

xmlファイルの構造を入力してください。 –

+0

完了!それが助けて欲しい、それは巨大なファイルです! –

+0

これを出力するプログラムは何ですか?私はこれらの正確なファイルタイプを解析しようとしているGoogle上のいくつかの人々を参照してください... –

答えて

2

:ここ

は、XMLファイルがどのように見えるかです!