朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
XML 子が何番目の親の子か確かめる





XMLで、ある一連の要素をXMLNodeListで取得し、その一つが何番目の親の子になるか確かめるには、次のサンプルコードのようにすればわかります。 先にサンプルとなるXMLを示します。


<root>
        <parent name="1">
        <child>aaa</child>
      </parent>
        <parent name="2">
        <child>bbb</child>
      </parent>
        <parent name="3">
        <child>ccc</child>
      </parent>
    </root>

次にサンプルコードを示します。
比較でやっていることは、同じインスタンスかどうかを比較しています。

C#

using System.Xml;
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            XmlDocument doc = new XmlDocument();
            doc.Load("..\\..\\XMLFile1.xml");
            //親のリストを取得
            XmlNodeList listParent = doc.GetElementsByTagName("parent");
            //子供のリストを取得
            XmlNodeList listChild=doc.GetElementsByTagName("child");
            for (int i = 0; i < listParent.Count - 1; i++)
            {
                if (listParent[i] == listChild[1].ParentNode)
                {
                    MessageBox.Show((i + 1).ToString() + "番目が同じです。");
                }
            }
        }
    }

VB.NET

Imports System.Xml
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim doc As XmlDocument = New XmlDocument()
        doc.Load("..\..\XMLFile1.xml")
        '親のリストを取得
        Dim listParent As XmlNodeList = doc.GetElementsByTagName("parent")
        '子供のリストを取得
        Dim listChild As XmlNodeList = doc.GetElementsByTagName("child")
        For i As Integer = 0 To listParent.Count - 2 Step 1
            If listParent(i) Is listChild(1).ParentNode Then
                MessageBox.Show((i + 1).ToString() + "番目が同じです。")
            End If
        Next
    End Sub
End Class








良いやや良い普通やや悪い悪い

投稿日時評価コメント