如何读取XML文件

时间:2013-04-10 18:14:36

标签: xml vb.net xmlreader

我有一个VB.net程序。我正在尝试使用XMLReader来读取.xml文件。我想打破XML文件,将其整理到不同的“部分”中,在此示例"FormTitle""ButtonTitle"中。我想抓取<Text>中的FormTitle数据并将其显示为表单"text",然后点击<Text>中的"ButtonTitle"并将其显示在按钮中文本。

这是我的XML文件:

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

这是我目前的代码:

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

如何引入下一部分(ButtonTitle)使用FormTitle(Text)的同名。我想我需要在if then语句中引用FormTitleButtonTitle吗?

2 个答案:

答案 0 :(得分:2)

查看此示例。 http://msdn.microsoft.com/en-us/library/dc0c9ekk.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

你应该可以使用:

doc.GetElementsByTagName("FormTitle")

然后,您可以循环遍历所有子节点。 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 

答案 1 :(得分:1)

使用XDocument可以更有效地读取Xml,并且由于语法较少而更具可读性。

您需要在XML中添加根。我称它为root,但它可以是任何东西。它只是封装了所有的XML

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

以下是从FormTitle

中提取“表单测试”的示例
    Dim document As XDocument = XDocument.Load("c:\tmp\test.xml")
    Dim title = From t In document.Descendants("FormTitle") Select t.Value

将文字分配给表格

Form1.Text = title.First()