Как я могу читать атрибуты из XML-документа на C #?

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

<pos piece="R"/>

будет ладьей.

Когда дело доходит до программы C #, как я могу прочитать значение атрибута, я использую такой цикл:

while(_reader.Read())
{
   if (_reader.NodeType == XmlNodeType.Element)
   {
      if(_reader.HasAttributes)
      {
           //This is where i want to assign the attribute to a char
           char piece;
      }
   }
}

person Community    schedule 24.05.2014    source источник


Ответы (4)


Для получения Значение атрибута XML:

string piece = _reader.GetAttribute("piece");
person har07    schedule 24.05.2014

Почему бы не создать набор данных по вашей xml-схеме? Тогда вы автоматически получите все в подарок. Я бы предпочел это. Очень помогает, и в дальнейшем его можно будет использовать повторно для любых других вещей.

person icbytes    schedule 24.05.2014

Эй, вот руководство Microsoft, надеюсь, оно поможет. MSDN

person Community    schedule 24.05.2014

Я сделал один из них некоторое время, когда начинал программировать. Возможно, это не самый эффективный способ, но он сработает.

XmlReader ReadXML = XmlReader.Create("XML FILE"); //Creates XMLReader instance

   while (ReadXML.NodeType != XmlNodeType.EndElement) //Sets the node types to closes. 
    {
       ReadXML.Read(); //Reads the XML Doc
            if (ReadXML.Name == "Child") //Focuses node 
            {
               while (ReadXML.NodeType != XmlNodeType.EndElement)//If the node is not empty
                 {
                    ReadXML.Read();
                    if (ReadXML.NodeType == XmlNodeType.Text) //Gets the text in the node
                    {
                        Console.WriteLine("In 'Child' node = {0}", ReadXML.Value);
                        Console.ReadKey();
                    }
                }
          }
      }
person Rynoh97    schedule 24.05.2014