0

要素数

上の図では、エレメント Chandru が 2 回繰り返されています。

だから私は繰り返される要素を数えなければなりません。

しかし、繰り返し要素の数を取得する方法がわかりません。

私を助けてください。

ここに私が書いたコード

public XML_3()
    {
        this.InitializeComponent();

        XmlDocument doc = new XmlDocument();
        doc.Load("D:/student_2.xml");

        XmlNodeList student_list = doc.GetElementsByTagName("Student");

        foreach (XmlNode node in student_list)
        {
            XmlElement student = (XmlElement)node;

            string sname = student.GetElementsByTagName("Chandru")[0].InnerText;                

            string fname = student.GetElementsByTagName("FName")[0].InnerText;

            string id = student.GetElementsByTagName("Chandru")[0].Attributes["ID"].InnerText;

            Window.Content = sname + fname + id;
        }
    }
4

3 に答える 3

3
var count = student.GetElementsByTagName("Chandru").Count;
于 2012-06-07T07:31:31.123 に答える
0

LINQtoXMLおよびXクラスを使用する方が簡単だと思います。

var doc = XDocument.Load("D:/student_2.xml");
var results = (from s in doc.Root.Elements()
              group s by s.Name into g
              select new { Name = g.Key, Count = g.Count() }).ToList();

これにより、それぞれ2つのプロパティを持つ要素のリストが表示されます:NameCount。複数回発生したその名前のみを受け取りたい場合は、とステートメントwhere g.Count() > 1の間に追加できます。groupselect

于 2012-06-07T07:29:03.277 に答える
0

私は C# プログラマーではありませんが、アルゴリズムを提供できますので、プログラムに適用してみてください。

構造体の配列を定義します。構造体には、ElmntName と NbOccurance の 2 つのフィールドが必要です。

struct Elmnt
{ String ElmntName;
  Int NbOccurance;
} MyElement;

次に、渡す各要素を配列に渡します。要素が見つからない場合は、NbOccurance = 0; で新しい要素として保存します。それ以外の場合は、発生回数を増やします。xml の読み取りが完了すると、要素の名前とその出現箇所を含むリストが取得されます。

于 2012-06-07T07:31:40.223 に答える