xmlreader

bombimbom
Дата: 03.06.2014 11:11:51
Добрый день, подскажите как прочитать файл xml
<?xml version="1.0" encoding="utf-8"?>
<root>
	<dict alias="country_dict" name="Государство">
		<item>
			<code>
				ABH
			</code>
			<value>
				АБХАЗИЯ
			</value>
		</item>
		<item>
			<code>
				AFG
			</code>
			<value>
				АФГАНИСТАН
			</value>
		</item>
    </dict>
</root>


начал так

 Dim wr As New System.IO.StreamWriter("C:\wr.txt", False)
        Using reader As XmlReader = XmlReader.Create("C:\country_dict.xml")
            While reader.Read()  
                If reader.IsStartElement("item") Then                    
                Dim attribute_name As String = reader.Item("code") ' тут получаю nothing
                    Dim attribute_id As String = reader.Item("value") ' тут получаю nothing
                    If attribute_name IsNot Nothing Then 
                        MsgBox(attribute_name + ";" + attribute_id)                      
                    End If  
                End If
            End While
        End Using
подскажите что не так делаю?
        wr.Close()
Arm79
Дата: 03.06.2014 11:39:10
bombimbom
подскажите что не так делаю?

Все.

Вы определяете начало элемента и тут же думаете, что это атрибут. Иными словами, после элемента еще нужно сделать операцию чтения, чтобы получить атрибут. Для XmlReader обычно используется принцип стэка при парсинге.

С другой стороны гемморой с XmlReader оправдан только в случае массовой обработки реально больших Xml-документов. Чем вас не устраивает XDocument?
bombimbom
Дата: 03.06.2014 11:48:58
ну мне надо прочитать 2000 таких записей
что лучше использовать?
Arm79
Дата: 03.06.2014 12:08:38
Arm79
XDocument
Где-то в степи
Дата: 03.06.2014 12:40:16
bombimbom,
иногда лучше поставить вопрос в другом ключе - как мне десериализовать xml документ.
Поверьте потраченное время окупится с лихвой простотой использования.
bombimbom
Дата: 03.06.2014 12:48:14
спасибо, использовал xdocument все получилось
просто хотелось разобраться с xmlreader
Roman Mejtes
Дата: 03.06.2014 15:39:17
такую XML'ку проще десериализовать, потом с такой же лёгкостью сериализовать обратно