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"?
2 answers
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
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()