2011-11-09 8 views
1
<?xml version="1.0" encoding="UTF-8"?> 
<Pit> 
    <ROW ExecutionID="1366617710" Date="2011-11-09 00:04:04.303" AssertionName="Check for critical conditions" /> 
    <ROW ExecutionID="1366619608" Date="2011-11-09 00:04:16.893" AssertionName="Check for critical conditions" /> 
</Pit> 

特定のexecutionIDに基づいて日付値を取得しようとしています。属性値が必要です

以下のクエリを使用してみましたが、「例外」に達しました。それはかなりシンプルですが、なぜ失敗するのか分かりません。

例外メッセージは、あなたのロジックオフ残りは、彼らが<ROW>な要素であると仮定し、Object reference not set to an instance of an object.

public static string GetRowError(XDocument xmlDoc, string executionID) 
{ 
    string resultType = string.Empty; 
    try 
    { 
     resultType = (from testResult in xmlDoc.Elements("Pit") 
      where 
      testResult != null && 
      testResult.Attribute("ExecutionID").Value.Equals(executionID, StringComparison.CurrentCultureIgnoreCase) == true 
      select testResult.Attribute("Date").Value).FirstOrDefault(); 
    } 
    catch (Exception ex) 
    { 
     resultType = ex.ToString(); 
    } 

    return resultType; 
} 
+0

例外を通知するといいでしょう。加えて、boolを返すのと同じではありませんか?なぜあなたは最後に==本当ですか? – FailedDev

+0

"オブジェクト参照がオブジェクトのインスタンスに設定されていません。" 実行IDがパラメータ – Navyseal

+0

の実行IDと等しいかどうかをチェックするために "== true"を使用します。デバッグまたは 'if(xmlDoc == null)を返すことによって、' xmlDoc'がnullであることを確認します。document null " ; ' –

答えて

2
xmlDoc.Elements("Pit") 

<Pit>の要素を返しますです。

xmlDoc.Elements("Pit").Elements()を使用するか、直接xmlDoc.Descendants("ROW")を選択してください。 @Henk Holtermanの答えに加えて

var attr = xmlDoc.Elements("Pit").Attribute("ExecutionID"); // attr = null 
var id = attr.Value; // error, attr == null 
+0

Thanx this works – Navyseal

0

- ちょうど改善:あなたのエラーが原因で発生し

var resultType = (from testResult in xmlDoc.Root.Descendants("ROW") 
        where testResult.Attribute("ExecutionID") != null && testResult.Attribute("ExecutionID").Value.Equals(executionID, StringComparison.CurrentCultureIgnoreCase) 
        select testResult.Attribute("Date").Value).FirstOrDefault(); 

それはせずに要素を占めているので、私はこのように私のクエリを記述します実行IDと== trueも必要ありません。あなたはなぜそれを真と比較しているのですか?何の理由もありません。

+0

私はあなたのヒントを覚えています これは... thanx mate :) – Navyseal

関連する問題