Member 14769019 Ответов: 1

Считывание атрибутов XML из URL-адреса.


Ребята, он может читать все элементы, но не может читать атрибут. Это ссылка: https://www.korayspor.com/grisport.xml

Мне нужно прочитать атрибуты категорий. Это "Kategori" по-турецки. Например, "Kategori no="8988">

Этот код не работает:
case XmlNodeType.Attribute: 
                    xmlSet.WriteAttributeString(reader.Name, reader.Value);
                    break;


XmlTextReader reader = new XmlTextReader("https://www.korayspor.com/grisport.xml");
        XmlTextWriter xmlSet = new XmlTextWriter("sdfsdf", UTF8Encoding.UTF8);
        xmlSet.WriteStartDocument();
        while (reader.Read())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    xmlSet.WriteStartElement(reader.Name);
                    break;

                case XmlNodeType.Text: 
                    xmlSet.WriteValue(reader.Value);
                    break;

                case XmlNodeType.CDATA: 
                    xmlSet.WriteCData(reader.Value);
                    break;

                case XmlNodeType.EndElement: 
                    xmlSet.WriteEndElement();
                    break;

                **case XmlNodeType.Attribute: 
                    xmlSet.WriteAttributeString(reader.Name, reader.Value);
                    break;**

            }
        }
        xmlSet.WriteEndDocument();
        xmlSet.Close();


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

Я не знаю, что мне делать............

PIEBALDconsult

Вы спрашиваете о чтении, но код-это написание.
Никто не собирается переходить на этот URL-адрес, пожалуйста, покажите фрагмент интересующих вас данных.

Member 14769019

Если я могу читать аттр. ценность, напишу я. Но я не могу получить ценность.

1 Ответов

Рейтинг:
6

Garth J Lancaster

Я почти уверен, что вы не можете делать такие "атрибуты", так как они являются "субэлементами".

case XmlNodeType.Element:
    xmlSet.WriteStartElement(reader.Name);
    break;
Я думаю, тебе нужно что-то большее, чем это
case XmlNodeType.Element:
xmlSet.WriteStartElement(reader.Name);
if(reader.HasAttributes)
{
  while(reader.MoveToNextAttribute())
  {
    // Do something with reader.Name, reader.value
  }
}
break;


вам нужно будет проверить intellisense/заполнить пробелы, это просто из быстрого сброса мозга

[Edit] возможно, Вам это понадобится
if(reader.MoveToFirstAttribute)
{
  // Do something with reader.Name, reader.value
  while(reader.MoveToNextAttribute())
  {
    // Do something with reader.Name, reader.value
  }
}
[/Редактировать]


Member 14769019

Да, спасибо, что он работает.

Maciej Los

5ed!