Hej Om XmlTextReader'n har läst in följande tag: Hej Jo, det ska funka. Propertyn på xmltextreadern heter egentligen Item. Det går lika bra att skriva så här: Nepp det går inge bra detta. Hittade några fel i xml'en. Det saknas = vid value-attributet, samt några taggar börjar med <<. Jag fick det att funka med denna xml'en: OK Nu har jag lyckats loopa ut Attrributvärden, men när jag samtidigt försöker göra detsamma med övriga värden som ligger inom huvudtaggen <CONTACT>....</CONTACT> så tar de ut varandra. Moment 22 alltså!  Vad menar du med att de tar ut varandra? Läsa attributvärden i XML-taggar
    
    
Jag har en exempelkod skriven i VB.NET och en exempel XML-fil nedan.
Jag vill även lyfta ut värden från attributen som finns i XML-taggarna. Någon som har någon hyfsat 'enkel' lösning för sådant??
Aktuell kod loopar endast genom värden som har en definerad start resp sluttagg, och huvudvärken börjar som sagt  när jag försöker blanda in attributen.
Programkoden:
------------------------
Imports System.Xml
Imports System.Xml.Serialization
Public Class Form1
    Inherits System.Windows.Forms.Form
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim FileName As String = "C:\AddressBook.xml"
      Dim Reader As New XmlTextReader(FileName)
      Reader.MoveToContent()
      Dim addressData As Collection, elementName As String
      Do While Reader.Read
         Select Case Reader.NodeType
             Case XmlNodeType.Element
                If Reader.Name = "CONTACT" Then
                      addressData = New Collection
                 Else
                        elementName = Reader.Name
                 End If
              Case XmlNodeType.Text
                 If Not addressData Is Nothing Then
                      addressData.Add(Reader.Value, elementName)
                 End If
              Case XmlNodeType.EndElement
                 If Reader.Name = "CONTACT" Then
                     Dim item As String
                     Try
                         item = addressData("FirstName") & " " & addressData("LastName") & "  (" & addressData("Email") & ")"
                     Catch
                      End Try
                      TextBox1.Items.Add(item)
                      addressData = Nothing
                    End If
            End Select
            
        Loop
    End Sub
End Class
XML-filen:
------------------------
<?xml version="1.0"?>
<AddressBook xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Addresses version="1.0">
<MAIN class="01008000">
	<CONTACT label="Bosse" value"test1">
		<FirstName>Bosse</FirstName>
		<LastName>Andersson</LastName>
		<Company>Företaget AB</Company>
		<Address>123 Huvudgatan</Address>
		<City>Staden</City>
		<Email>bosse@home.se</Email>
	</CONTACT>
	<CONTACT label="Lasse" value"test2">
		<FirstName>Lasse</FirstName>
		<LastName>Johansson</LastName>
		<Company>Företaget AB</Company>
		<<Address>123 Huvudgatan</Address>
		<City>Staden</City>
		<Email>lasse@home.se</Email>
	<CONTACT label="Hasse" value"test3">
		<FirstName>Hasse</FirstName>
		<LastName>Persson</LastName>
		<Company>Företaget AB</Company>
		<<Address>123 Huvudgatan</Address>
		<City>Staden</City>
		<Email>hasse@home.se</Email>
	</CONTACT>
	</CONTACT>
</MAIN>
</Addresses>
</AddressBook>Sv: Läsa attributvärden i XML-taggar
    
    
<Addresses version="1.0">
kan du skriva:
reader("version")
mvh MichaelSv:Läsa attributvärden i XML-taggar
    
    
det verkar inte hjälpa, troligen saknas det någon class som behövs för att dyka ned i attributen. Jag har laborerat med olika sådana och ändrat XmlNodeType fram och tillbaka. Sv: Läsa attributvärden i XML-taggar
    
    
reader.Item("version")
Kan även indexera dig fram till rätt värde:
reader(0)Sv:Läsa attributvärden i XML-taggar
    
    
Och plötsligt vill inte loopen vara med längre.
FELMEDDELANDE
Do While Reader.Read ' är en oväntad token 
Vad nu det är för något...?
............................Hittade felet..... åäö gillas INTESv: Läsa attributvärden i XML-taggar
    
    
<?xml version="1.0"?> 
<AddressBook xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<Addresses version="1.0"> 
<MAIN class="01008000"> 
    <CONTACT label="Bosse" value="test1"> 
        <FirstName>Bosse</FirstName> 
        <LastName>Andersson</LastName> 
        <Company>Företaget AB</Company> 
        <Address>123 Huvudgatan</Address> 
        <City>Staden</City> 
        <Email>bosse@home.se</Email> 
    </CONTACT> 
    <CONTACT label="Lasse" value="test2"> 
        <FirstName>Lasse</FirstName> 
        <LastName>Johansson</LastName> 
        <Company>Företaget AB</Company> 
        <Address>123 Huvudgatan</Address> 
        <City>Staden</City> 
        <Email>lasse@home.se</Email> 
    </CONTACT> 
    <CONTACT label="Hasse" value="test3"> 
        <FirstName>Hasse</FirstName> 
        <LastName>Persson</LastName> 
        <Company>Företaget AB</Company> 
        <Address>123 Huvudgatan</Address> 
        <City>Staden</City> 
        <Email>hasse@home.se</Email> 
    </CONTACT> 
</MAIN> 
</Addresses> 
</AddressBook> Sv:Läsa attributvärden i XML-taggar
    
    
Kan du beskriva vad du ändrade i VB-koden för att få allt att funka?
Jag lyckades inte... :-(
Jag vill som sagt även loopa ut Attributvärden tillsammans med övriga värden...
<CONTACT label="värde" value="värde">eventuellt värde
        <FirstName>Värde</FirstName> 
        <LastName>Värde</LastName> 
        <Company>Värde</Company> 
        <Address>Värde</Address> 
        <City>Värde</City> 
        <Email>Värde</Email> 
</CONTACT>Sv: Läsa attributvärden i XML-taggar
    
    
ALLA TIPS ÄR VÄLKOMNA....
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim FileName As String = "C:\Downloads\VBNET\XML\XMLRapport\AddressBook.xml"
        Dim Reader As New XmlTextReader(FileName)
        TextBox1.Text = ""
        Dim LABEL As String
        Dim VARDE As String
        Do While Reader.Read
            Select Case Reader.NodeType
                Case XmlNodeType.Element
                    If Reader.Name.Equals("CONTACT") Then
                        ' Attributvärden hämtas
                        Try
                            LABEL = Reader.Item("label")
                            VARDE = Reader.Item("value")
                        Catch ex As Exception
                        End Try
                        TextBox1.Text &= LABEL & " " & VARDE & vbCrLf
                    End If
            End Select
        Loop
    End Sub
End ClassSv:Läsa attributvärden i XML-taggar
    
    
Se min kommentar nedan hur du ska komma åt det underliggande.  
        Do While Reader.Read 
            Select Case Reader.NodeType 
                Case XmlNodeType.Element 
                    If Reader.Name.Equals("CONTACT") Then 
                        ' Attributvärden hämtas 
                        Try 
                            LABEL = Reader.Item("label") 
                            VARDE = Reader.Item("value") 
                        Catch ex As Exception 
                        End Try 
                        TextBox1.Text &= LABEL & " " & VARDE & vbCrLf 
                        ' ------------  Här kan du göra Reader.Read()
                        '  för att komma åt childelements till CONTACT
                        ' t.ex. i en ny loop här  (nästlad) 
                    End If 
            End Select 
        Loop