I have a VB.net program. I'm attempting to use XMLReader to read a .xml file. I want to break the XML File up to organize it into different "Sections" In this example "FormTitle" and "ButtonTitle". I would like to grab the <Text> data from FormTitle and display it as the Form "text" and take the <Text> in "ButtonTitle" and have it display in the button text.
Here is my XML File:
<?xml version="1.0" encoding="utf-8"?>
<!--XML Database.-->
<FormTitle>
<Text>Form Test</Text>
</FormTitle>
<ButtonTitle>
<Text>Button Test</Text>
</ButtonTitle>
Here is my current Code:
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
How can bring in the next section (ButtonTitle) With the same name that is in FormTitle which is (Text). I would assume I need to reference FormTitle and ButtonTitle in an if then statement?
Check out this example. http://msdn.microsoft.com/en-us/library/dc0c9ekk.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
You should can use:
doc.GetElementsByTagName("FormTitle")
You can then loop through all of the child nodes. 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
Using XDocument is more efficient for reading Xml and also more readable due to less syntax.
You need to add a root to your XML. I called it root, but it can be anything. It just encapsultes all of your XML
<?xml version="1.0" encoding="utf-8"?>
<root>
<FormTitle>
<Text>Form Test</Text>
</FormTitle>
<ButtonTitle>
<Text>Button Test</Text>
</ButtonTitle>
</root>
Here is an example of pulling the "Form Test" from FormTitle
Dim document As XDocument = XDocument.Load("c:\tmp\test.xml")
Dim title = From t In document.Descendants("FormTitle") Select t.Value
assign text to form
Form1.Text = title.First()
来源:https://stackoverflow.com/questions/15933333/how-to-read-an-xml-file