1

私は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 ステートメントで参照する必要があるFormTitleと思いますか?ButtonTitle

4

2 に答える 2

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 
于 2013-04-10T18:34:46.813 に答える
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()
于 2013-04-10T18:47:07.587 に答える