Como ler um ficheiro XML

Eu tenho um VB.net programa. Estou a tentar usar o XMLReader para ler A.ficheiro xml. Quero quebrar o ficheiro XML para o organizar em diferentes "secções" neste exemplo "FormTitle" e "ButtonTitle". Eu gostaria de pegar os dados <Text> de FormTitle e mostrá-los como o formulário "text" e tomar o <Text> em "ButtonTitle" e tê-los no texto do botão.

Aqui está o meu ficheiro XML:

<?xml version="1.0" encoding="utf-8"?>
<!--XML Database.-->
<FormTitle>
    <Text>Form Test</Text>
</FormTitle>
<ButtonTitle>
    <Text>Button Test</Text>
</ButtonTitle>

Aqui está o meu código actual:

If (IO.File.Exists("C:\testing.xml")) Then

    Dim document As XmlReader = New XmlTextReader("C:\testing.xml")

    While (document.Read())

        Dim type = document.NodeType


        If (type = XmlNodeType.Element) Then

            '
            If (document.Name = "Text") Then
                Me.Text = document.ReadInnerXml.ToString()


            End If



        End If


    End While

Else

    MessageBox.Show("The filename you selected was not found.")
End If

Como pode trazer a próxima secção (ButtonTitle) com o mesmo nome que está em {[5] } que é (Text). Presumo que preciso de me referir a FormTitle e ButtonTitle numa declaração do "se"?

Author: John Saunders, 2013-04-10

2 answers

Veja este exemplo. http://msdn.microsoft.com/en-us/library/dc0c9ekk.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

Pode utilizar:

doc.GetElementsByTagName("FormTitle")

Você pode então circular através de todos os nós de crianças. http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.childnodes.aspx

    Dim root As XmlNode = doc.GetElementsByTagName("FormTitle").Item(1)

    'Display the contents of the child nodes. 
    If root.HasChildNodes Then 
        Dim i As Integer 
        For i = 0 To root.ChildNodes.Count - 1
            Console.WriteLine(root.ChildNodes(i).InnerText)
        Next i
    End If 
 2
Author: Display Name is missing, 2013-04-10 18:34:46

Usar XDocument é mais eficiente para ler Xml e também mais legível devido a menos sintaxe.

Tem de adicionar uma raiz ao seu XML. Chamei-lhe raiz, mas pode ser qualquer coisa. Apenas encapsula todo o seu XML

<?xml version="1.0" encoding="utf-8"?>
<root>
<FormTitle>
    <Text>Form Test</Text>
</FormTitle>
<ButtonTitle>
    <Text>Button Test</Text>
</ButtonTitle>
</root>

Aqui está um exemplo de puxar o "teste Da Forma" do Título

    Dim document As XDocument = XDocument.Load("c:\tmp\test.xml")
    Dim title = From t In document.Descendants("FormTitle") Select t.Value

Atribuir o texto ao formulário

Form1.Text = title.First()
 1
Author: James, 2013-04-15 18:55:15