2016-04-14 5 views
0

を表示私は、このxmlファイルがあります(その案をし、このように複数のものを得ました)複数のXMLファイルでの最高値を見つけ、それらを

<?xml version="1.0" encoding="UTF-8" ?> 
<Car> 
    <Location name = "somewhere"> 
    <Type type="itstype"> 
    <Color>Blue</Color> 
    <Owner>Bill</Owner> 
    <Price>135</Price> 
    </Type> 
    </Location> 
    <Location name = "somewhere"> 
    <Type type="itstype"> 
    <Color>Red</Color> 
    <Owner>John</Owner> 
    <Price>250</Price> 
    </Type> 
    </Location> 
</Car> 

と私はすべてのXMLファイルを通読するためにC#を使用したいです(これは私ができる)と各XMLファイルの各車のための最高の価格を見つけて、それらを画面に表示する。 (例えば、私は10 xmlのファイルを持っていますが、その価格を持っている車の名前とともに各xmlファイルから10個の高価格のものを印刷しなければなりません)。xmlファイルには2台以上の車があります。 私はこれを使ってみましたが、読み込んだ最後のxmlファイルの最高価格しか表示しません。

public List<Cars> carHighestPrice (string carsname) 
{ 
    var highest = from hv in locations 
        from HV in hv.cars 
        orderby HV.votes 
        where hv.locationName == carsName 
        select HV; 
    return highest.ToList(); 
} 

これは私が彼らに

public void DisplayHighestPrices() 
{ 
    string str = ""; 
    foreach (var highest in locationList.locations) 
    { 
     str = locationList.carHighestPrice (highest.locationName).Last() + Environment.NewLine; 

    } 
    lbl1.Text = str; 
} 

EDIT表示するために使用しています方法です。これを修正する方法について

public String XMLFileName { get; private set; } 

    public configXML(String XMLFileName) 
    { 
     this.XMLFileName = XMLFileName; 
    } 

    public override String ToString() 
    { 
     return String.Format("{0}", XMLFileName); 
    } 

任意のアイデアをしてください?ここで

+0

あなたのサンプルXMLファイルは、構文errosの完全であると上記の行を交換してみることができます。 タグには終了タグがなく、タグはタグで終了します。まずそれを修正してください。 – Seprum

+0

@Seprum私はそれを修正しました。申し訳ありませんが間違ったファイルをコピーしました!また、プログラムは問題なくxmlファイルを読み込みますが、各xmlファイルの最高価格を印刷するだけです(10個あるので、10個の価格が必要です) – noel293

+0

XMLはLINQソリューションに公開できます。 – Seprum

答えて

0

は、LINQは、あなたのケースのためのXMLソリューションにある:

public int HighestPrice(string xmlFilePath) 
{ 
    var doc = XDocument.Load(xmlFilePath); 
    var cars = doc.Root.Elements("Location").Select(e => e.Element("Type")); 
    return cars.Max(c => int.Parse(c.Element("Price").Value)); 
} 

だけで希望最高値を得るためにあなたのXMLファイルごとに、このメソッドを使用します。

+0

私はそれを使用しましたが、xmlファイル(そのうちの1つ)が見つからないというエラーが表示されます。スレッドなどを使用してxmlファイルをすべて読み込んでいることを忘れてしまいました。 – noel293

+0

これはこのコードの問題ではありません。さらなる助けが必要な場合は、ファイルをどのように読み込んでいるかについての詳細をお知らせください。 – Seprum

+0

OpenFileDialogを使用してファイルをロードしています。xmlファイルの名前を取得し、必要な文字列として返すクラスがあります – noel293

0

あなたのローカル変数は常に上書きされ、最後の最高価格しかないようです。

str = locationList.carHighestPrice (highest.locationName).Last() + Environment.NewLine; 

あなたは

str = string.Concat(str, locationList.carHighestPrice (highest.locationName).Last(),Environment.NewLine) 
+0

しかし、エラーはありません、メソッド@Seprumに私に与えた – noel293

関連する問題