1

巨大な XML ファイル (20,000 行) があり、そこからデータを読み取りたいと考えています。私は今までにルーチンを書きました。私の質問は、見栄えを良くする方法はありますか? ファイルからデータを取得するのは醜い方法だと思うからです。

これは私のXMLファイルの構造です

<List
<Header>
</>
<Root>
    <Items>
        <Object>
            <Items>
                <Object>
                    <Items>
                        <Object>
                            <Items>
                                <Object>
                                    <IoItems>
                                        <IoObject>
                                        </>
                                    </>
                                </>
                            </>
                            <IoItems>                           
                                <IoObject>
                                </>
                            </>
                        </>
                        <Object>
                        </>
                        <Object>
                        </>
                        <Object>
                        </>
                    </> 
                </> 
                <Object>
                    //Like the Object above
                </>
                <StructureObject>
                    //Like the Object above
                </>
            </> 
        </> 
    </> 
</> 

そして、私のコードは次のようになります。

Dim myXMLDoc As New XmlDocument
        Dim Node As XmlNode
        Dim Node2 As XmlNode
        Dim Node3 As XmlNode
        Dim Node4 As XmlNode
        Dim Node5 As XmlNode
        Dim Node6 As XmlNode
        Dim Node7 As XmlNode
        Dim Node8 As XmlNode
        Dim Node9 As XmlNode
        Dim Node10 As XmlNode
        Dim Node11 As XmlNode

        myXMLDoc.Load("H:\Data.xml")
        Dim root As XmlNode = myXMLDoc.GetElementsByTagName("Root")(0)

        For Each Node In root.ChildNodes
            If Node.Name = "Items" Then
                For Each Node2 In Node.ChildNodes
                    If Node2.Name = "Object" Then
                        For Each Node3 In Node2.ChildNodes
                            If Node3.Name = "Items" Then
                                For Each Node4 In Node3.ChildNodes
                                    If Node4.Name = "Object" Then
                                        For Each Node5 In Node4.ChildNodes
                                            If Node5.Name = "Items" Then
                                                For Each Node6 In Node5.ChildNodes
                                                    If Node6.Name = "Object" Then
                                                        For Each Node7 In Node6.ChildNodes
                                                            If Node7.Name = "Items" Then
                                                                For Each Node8 In Node6.ChildNodes
                                                                    If Node8.Name = "Object" Then
                                                                        For Each Node9 In Node8.ChildNodes
                                                                            If Node9.Name = "IoItems" Then
                                                                                For Each Node10 In Node9.ChildNodes
                                                                                    If Node10.Name = "IoObject" Then
                                                                                        MsgBox(Node10.Value)
                                                                                    End If
                                                                                Next
                                                                            End If
                                                                        Next
                                                                    End If
                                                                Next
                                                            ElseIf Node6.Name = "IoItems" Then
                                                                For Each Node11 In Node6.ChildNodes
                                                                    If Node11.Name = "IoObject" Then
                                                                        MsgBox(Node11.Value)
                                                                    End If
                                                                Next
                                                            End If
                                                        Next
                                                    End If
                                                Next
                                            End If
                                        Next
                                    End If
                                Next
                            End If
                        Next
                    End If
                Next
            End If         
        Next
4

3 に答える 3

2

VB.NET で XML を処理する最も簡単な方法は、(少なくともほとんどの場合) XML リテラルXElementの代わりに使用することです。XmlDocument

したがって、すべての<IoObject>要素を取得するには、単に使用します

Dim xml = XElement.Load("H:\Data.xml")

For Each node In xml...<IoObject>
    MsgBox(node.Value)
Next
于 2015-02-02T12:02:35.100 に答える
1

myXMLDoc が XMLDOM オブジェクトの場合、次のようにタグの各チェーンを見つけることができます。

Set nodes = root.selectNodes("Items/Object/Items/Object/.../IoObject")
For Each Node In nodes
    ' do something
Next

VBScript for で動作しCreateObject("MSXML.DOMDocument")ます。VB.NETではチェックしていません。

于 2015-02-02T10:30:10.530 に答える