2016-05-17 16 views
0

私は様々なパーセンテージ値を持つXMLファイルを変更する作業を進めています。 1つのXMLファイルには複数の要素があります。ある特定の要素に対してパーセンテージがあり、残りの要素に残りのパーセンテージを配分する必要があります。以下は私のサンプルXMLファイルがサーバーに保存されているところです。xmlタグの複数の要素に均等にパーセンテージを配分する

<exam> 
    <name>Maths</name> 
    <percentage>100</percentage> 
</exam> 
<exam> 
    <name>Physics</name> 
    <percentage>70</percentage> 
</exam> 
<exam> 
    <name>Chemistry</name> 
    <percentage>70</percentage> 
</exam> 

私は1つの特定の被験者のパーセンテージ値を持っています。例えば、私は数学のパーセンテージ値を持っており、それをハードコーディングすることによって、以下のコードを使って数学のパーセンテージ値を更新しました。

foreach (XElement xmltag1 in xmltag.Descendants(subsection)) 
{ 
    if (xmltag1.Element("name").Value.Equals("Maths")) 
    { 
     xmltag1.Element("percentage").Value = "75"; 
    } 
} 

今私は小数と整数とないと理化学用で、残りの被験者のパーセント値を更新する必要があります。だから私はそれのために以下のロジックを使用しています。

int totalsections = subclasscount; 
// subclass count is a method which would return the total number of subclasses inside a particular xml tag. I have that method available with me 
int remainingallocatedpercentage = 25/totalsections; 
foreach (XElement xmltag1 in xmltag.Descendants(subsection)) 
{ 
    if ((remainingallocatedpercentage % 1) == 0) 
    { 
     if (!xmltag1.Element("name").Value.Equals("Maths")) 
     {              
      xmltag1.Element("percentage").Value = remainingallocatedpercentage; 
     } 
    } 
    else 
    { 
    }   
} 

私はelseパスの処理方法についてはあまりよく分かりません。だから私はそれを実装するロジックが必要です。私は他のどのような主題価値が利用可能であるのか分からないことを知らせたいと思います(物理学のように化学は動的で静的ではない複数の科目があります)ので、残りのパーセンテージをすべての科目に均等に配分する必要があります。

+0

質問は、あなたはelse節で何をしたいですか? – Marco

+0

Marcoは混乱して申し訳ありません。私は今質問を編集しました。今、あなたは私が正確に必要なものを見つけ出すことができるはずです。 – stangada

+0

else節では、残りの件数にパーセンテージを整数で割り当てたいと思っています。数学のために私は75割り当てられているので、私は物理学の22と化学23の割り当てたい。 – stangada

答えて

0

まず、int remainingallocatedpercentage = 25/totalsections;は常に整数値を取得するため、コードの一部が機能しません。代わりにあなたが行うことができます:

var remainingallocatedpercentage = 25/(float)totalsections; 

これを適用した後、今あなたはあなたのコードのelse状態に落下する機会を持っています。

実際の質問が始まります。しかし、その事件に対処する戦略が必要です。

  1. ただ、他のクラスの値に浮動小数点数の下限値を設定する:あなたのelse場合には、次の方法で行くことができます。これは非常に簡単です:

    xmltag1.Element("percentage").Value = remainingallocatedpercentage; 
    
  2. 最後の1を除いて、それらのすべてにフロア値を設定し、最後の1に残りの部分を設定します。これは少し面倒です:

    if(!xmltag1.Element("name").Value.Equals(xmltag.Descendants(subsection).LastOrDefault().Element("name").Value)) 
    { 
        xmltag1.Element("percentage").Value = remainingallocatedpercentage; 
    } 
    else 
    { 
        xmltag1.Element("percentage").Value = remainingallocatedpercentage + 1; 
    } 
    

私はスーツにあなたに近づくかわからないけど、あなたはその整数制約を持っているので、あなたがこれらのより多くのチャンスを持っていません。

関連する問題