以下は私のXMLファイルです。XMLファイルをループし、特定のXMLタグ内の値の合計を計算する
<DIMENSION>
<id>2</id>
<name>A</name>
<STATUS>
<name>Talk</name>
<percentage>-1</percentage>
<ID>CT</ID>
</STATUS>
<STATUS>
<name>B</name>
<percentage>-1</percentage>
<ID>CN</ID>
</STATUS>
<STATUS>
<name>none</name>
<percentage>80</percentage>
<ID>NONE</ID>
</STATUS>
</DIMENSION>
<DIMENSION>
<id>0</id>
<name>C</name>
<STATUS>
<name>read</name>
<percentage>-1</percentage>
<ID>UR</ID>
</STATUS>
<STATUS>
<name>D</name>
<percentage>-1</percentage>
<ID>DC</ID>
</STATUS>
<STATUS>
<name>E</name>
<percentage>-1</percentage>
<ID>OR</ID>
</STATUS>
<STATUS>
<name>S</name>
<percentage>-1</percentage>
<ID>SA</ID>
</STATUS>
<STATUS>
<name>X</name>
<percentage>95</percentage>
<ID>CA</ID>
</STATUS>
</DIMENSION>
私はXMLファイルをループし、特定のID(IDタグ)の各次元セクション内のパーセンテージ値の合計を求めます。たとえばid 2の場合、すべてのパーセント値を合計したいとします。だから、私の出力は78でなければなりません。同様に、私はIDタグを含むすべてのDIMENSIONタグをループし、パーセンテージを計算します。私はXMLのlinqを使用しており、以下は私が導出したコードです。しかし私の下のコードでは、idタグに関係なくすべてのdimensionタグの全体のパーセンテージがわかりますが、特定のId値を持つdimensionタグのパーセンテージの合計が必要です。私の最初のパーセンテージの出力値は78です。私の2番目のパーセンテージ値の出力は74です。私の3番目と4番目のパーセンテージの出力値は78です。
public static void percentagecalculationallotmentDimension(string XMLpath, "DIMENSION", string "STATUS")
{
try
{
byte[] preamble = Encoding.UTF8.GetPreamble();
XDocument doc = XDocument.Load(XMLpath + @"\filterSetsOut5.xml");
foreach (XElement xmltag in doc.Descendants("DIMENSION"))
{
if (!xmltag.Element("id").Value.Equals("0"))
{
foreach (XElement xmltag1 in xmltag.Descendants("STATUS"))
{
int sum = (from nd in doc.Descendants(subsection).Descendants("percentage")
select Int32.Parse(nd.Value)).Sum();
break;
}
}
}
}
catch (Exception ex)
{
//Logger.Instance.ErrorLog("Error while alloting percentage for" + mainsection + "" + subsection + "section due to" + ex.ToString());
}
}
ような何かを試すことができます - すべてが必要とされるよりも右に多く、さらにオーバーです。また、171行のXMLは必要ありません。短い*サンプルファイルだけでなく、完成した*プログラムでは、達成しようとしていることを示しています。 –
IDごとに1つのディメンションタグが存在するのは間違いありませんか?あなたの質問が*すべてのタグのパーセンテージを集計するか、または両方ともではなくただ1つのタグを集計するか、について質問した場合は役に立ちます。 –
あなたはXML文書の作成者ですか? xml形式を変更できますか? –