Чтение XML файла с XmlTextReader, исправить приведенный код - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Пытаюсь прочитать атрибуты из хмл-файла, но ничего не выходит. Ошибок не выкидывает, атрибуты не читает. Чтение вот в этом куске:
ArrayList attributes = new ArrayList();
            XmlDocument doc = new XmlDocument();
            XmlTextReader reader = null;
            reader = new XmlTextReader("ObjectsAssociation.xml");
            reader.WhitespaceHandling = WhitespaceHandling.None;
 
            while(reader.Read())
                if (reader.NodeType==XmlNodeType.Element)
                    if (reader.Name == "Object")
                    {
                        Object_attr ob_attr = new Object_attr(reader.GetAttribute("AdkID"), reader.GetAttribute("AdkName"), reader.GetAttribute("AdkGroup"));
                        while (reader.Read() && reader.Name == "uniobj")
                            ob_attr.AddObj(reader.GetAttribute("UniName"), reader.GetAttribute("UniID"), reader.GetAttribute("bydiag"));
                        attributes.Add(ob_attr);
                    }
            foreach (Object_attr ob in attributes)
            {
                Console.Write(string.Format("AdkID=",ob.adk_id));
                Console.Write(string.Format("AdkName=", ob.adk_name));
                Console.WriteLine(string.Format("AdkGroup=", ob.adk_group));
 
                foreach (UniObjects uob in ob.obj_attr)
                {
                    Console.WriteLine(string.Format("UniName=", uob.uni_name));
                    Console.WriteLine(string.Format("UniID=", uob.uni_id));
                    Console.WriteLine(string.Format("bydiag=", uob.by_diag));
                }
            }
Что не так, подскажите? Файл хмл лежит в каталоге Debug. При необходимости могу предоставить полный листинг
Скорее всего, ошибка в исходных данных. В хмл-файле такой формат:
<Object AdkID="12" AdkName="МЭ3" AdkGroup="6">
    <!-- ПХМ3/ОХМ3 -->
    <uniobj UniName="ПХМ3/ОХМ3" UniID="44" bydiag="1" />
  </Object>
И не выполняется условие
while (reader.Read() && reader.Name == "uniobj")
Потому что присутствует комментарий. Как его обойти?

Решение задачи: «Чтение XML файла с XmlTextReader, исправить приведенный код»

textual
Листинг программы
while(reader.Read())   
 
                if (reader.NodeType==XmlNodeType.Element) 
                    if (reader.Name == "Object") 
                    {
                        Object_attr ob_attr = new Object_attr(reader.GetAttribute("AdkID"), reader.GetAttribute("AdkName"), reader.GetAttribute("AdkGroup"));
 
                       if (reader.HasAttributes)
                            while (reader.MoveToNextAttribute())
                            {
                                ob_attr.AddObj(reader.GetAttribute("UniName"), reader.GetAttribute("UniID"), reader.GetAttribute("bydiag"));
                            }
                        attributes.Add(ob_attr); 
                    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5