Member 14067398 Ответов: 0

Как читать дочерние элементы XML-элемента с помощью C#


Всем Привет,

Я хочу прочитать ниже xml-данные.

&ЛТ;идентификатор версии метаданных идентификатор объекта="CDASH_MetaDataVersion_2011-10-24" наименование="CDASH МДВ"&ГТ;
&ЛТ;FormDef ОИД="Ф. AE_2011-10-24" наименование="неблагоприятное событие" повторяя="нет"и GT;
<ItemGroupRef Mandatory="Yes" ItemGroupOID="IG.AEYN_2011-10-24"/>
<ItemGroupRef Mandatory="Yes" ItemGroupOID="IG.AE_DETAILS_2011-10-24"/>


Если вы видите, что мне нужны данные из элемента "FORMDef" и хотите проверить, есть ли у него "ItemGroupRef", то я хочу прочитать. Когда я читаю с помощью XMLTextreader, я могу прочитать "FormDef", но я хочу прочитать "ItemGroupRef" в том же цикле. Если он присутствует, то прочитайте и переместите читателя к следующему элементу.

Теперь, когда я читаю моя программа выходит на "FORMDef" и в следующем цикле он собирается "ItemGroupRef", но с "ItemGroupRef" - это вспомогательный элемент "FormDef" я хочу, чтобы прочитать его на одном дыхании и переместить читателя к следующему.

Детская Помощь

Что я уже пробовал:

public ArrayList Form_data = new ArrayList();
        public struct Form_attr
        {
            public string OID;
            public string Name;
            public string repeating;
        };
        public frmMain()
        {
           
            InitializeComponent();
            load_XML();
        }

        public void load_XML()
        {
         
            Form_attr fa;
            try
            {
                XmlTextReader reader = new XmlTextReader("updated.xml");
                while (reader.Read())
                {
                    if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "FormDef"))
                    {
                        if (reader.HasAttributes)
                        {
                            fa.OID = reader.GetAttribute("OID");
                            fa.Name = reader.GetAttribute("Name");
                            fa.repeating = reader.GetAttribute("Repeating");
                            Form_data.Add(fa);
                            
                            
                        }
                                           
                        
                        
                    }
                 /*   else if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "FormDef"))*/



                }
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            finally
            {
               
            }


            for (int i = 0; i < Form_data.Count; i++)
            {
                Form_attr test = (Form_attr)Form_data[i];
              Console.WriteLine("Form OID--> "+test.OID+" Name==>"+test.Name+"   Repeating-->"+test.repeating );
            }
            
        }
    }
}

0 Ответов