2012-02-13 3 views
0

IXMLアクセスが含ま

<AllReport> 
    <Report> 
      <DataPoint1> 
      </DataPoint1> 
      <DataPoint2> 
      </DataPoint2> 
      <DataPoint3> 
      </DataPoint3>  
    </Report> 
    <Report> 
      <DataPoint1> 
      </DataPoint1> 
      <DataPoint2> 
      </DataPoint2> 
      <DataPoint3> 
      </DataPoint3> 
    </Report> 
    so on so forth.... 
</AllReport> 

ように配置された1つのXML構造ファイルは、forループのマルチ脂肪を使用せずにDataPoint1に直接アクセスするための任意のより良い方法はありますか?

+1

どのプログラミング言語で? – Tomalak

+0

何よりも良い? –

答えて

0

C#では、あなたのサンプル文書内のすべてのDataPoint1ノードのリストを返します。両方のXMLに

var xmlItems = XDocument.Load("yourXML); 
var result = from e in xmlItems.Descendants("Report").Descendants("DataPoint1"); 

foreach(item in result){ 

    //it goes though all DataPoint 1 

} 
0

XPath式/AllReport/Report/DataPoint1//DataPoint1をLINQを使用することができます。 DOMライブラリまたは選択した言語が提供する手段を使用して、そのリストを繰り返し処理できます。

実際の文書の性質によって異なります。アクセスしたいDataPoint1のすべてのインスタンスが同じ方法でネストされている場合は、前者を使用します。あなたがDataPoint1のネスティング(おそらくいくつかのレポートは、サブレポートを持っている、または「要約」AllReportDataPoint1子があるのを確認することができない場合は、後者が好ましいかもしれない。

それは、より正確な表現を選択するために、通常は最高です、パフォーマンスとエラー検出の両方の理由で。

関連する問題