- - PR -
VB.NET の For Each文で、MSXMLが無限ループになります。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-10-25 21:39
早速ですが、MSXML3.0のバグではまさかないと思いますが、DOMとVBのFor Each文を使って、複数の子要素を持つ任意の要素に対して、その子要素をひとつづつ拾っていこうと試しましたが、旧 VB6.0では、うまく作動しましたが、VB.NETでは無限ループになってしまします。
いくら考えてもわかりません。 僕の単純なミスかもしれませんが、皆さんのお知恵をお貸しください。 VB 6.0 では、下記のソースで作動します。 Private Sub Label1_Click() Dim xml_str As String xml_str = "<?xml version='1.0' encoding='UTF-8'?><root><A><child_1>111</child_1><child_2>222</child_2></A></root>" Dim dom As DOMDocument30 Set dom = New DOMDocument30 dom.loadXML (xml_str) Dim temp_node As MSXML2.IXMLDOMNode Set temp_node = dom.documentElement Set temp_node = temp_node.firstChild Dim i As Integer For i = 1 To temp_node.childNodes.length MsgBox (temp_node.childNodes(i - 1).xml) '<child_1>111</child_1> と <child_2>222</child_2>が表示されてOK Next For Each x In temp_node.childNodes '同じく<child_1>111</child_1> と <child_2>222</child_2>が表示されてOK MsgBox (x.xml) Next End Sub ところが、VB.NETだと後半部分で For Eachを使うと無限ループになってしまします。 Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click Dim xml_str As String xml_str = "<?xml version='1.0' encoding='UTF-8'?><root><A><child_1>111</child_1><child_2>22</child_2></A></root>" Dim dom As New MSXML2.DOMDocument30() dom.loadXML(xml_str) Dim temp_node As MSXML2.IXMLDOMNode temp_node = dom.documentElement temp_node = temp_node.firstChild Dim x As MSXML2.IXMLDOMNode Dim i As Integer For i = 1 To temp_node.childNodes.length MsgBox(temp_node.childNodes(i - 1).xml) 'こちらはVB6.0と同様にOK。 Next For Each x In temp_node.childNodes MsgBox(x.xml) '<child_1>111</child_1>の無限ループとなる。 '<child_2>222</child_2>が出てこない。 Next End Sub どうぞよろしくお願いします。 |
1