By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
444,041 Members | 1,056 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 444,041 IT Pros & Developers. It's quick & easy.

Help with XmlNode - node.HasChildNodes always returns true even when no child exists

P: n/a
RJN
Hi

I have to read an xml and add the node elements into a hashtable with
nodename as key and nodetext as value. If the selected node has
childnodes, then value should go as an array.

for eg.,

<Root>
<mysection>
<logroot>e:\temp</logroot>
<outputdir>
<dir1>e:\temp1</dir1><dir2>e:\temp2</dir2>
</outputdir>
</mysection>
<myanothersection></myanothersection>
</Root>

I would first search for "Root/mysection". Now since logroot doesn't
have further childnodes, I would like to add to the hashtable "logroot"
as key and "e:\temp" as value. The next node outputdir has 2 child nodes
dir1 and dir2. I would like to create a string array for the values of
dir1 and dir2 and add to the hashtable "outputdir" as key and the array
as value.

The following code is not working for me.

Dim strXml As String =
"<Root><mysection><logroot>e:\temp</logroot><outputdir><dir1>e:\temp1</d
ir1><dir2>e:\temp2</dir2></outputdir></mysection><myanothersection></mya
nothersection></Root>"
Dim xmlDoc As New XmlDocument
xmlDoc.LoadXml(strXml)
Dim xmlSection As XmlNode =
xmlDoc.SelectSingleNode("Root/mysection")
Dim htValues As New Hashtable
For Each node As XmlNode In xmlSection.ChildNodes
If (node.HasChildNodes) Then
Dim str() As String
ReDim str(node.ChildNodes.Count - 1)
For i As Integer = 0 To node.ChildNodes.Count - 1
str(i) = node.ChildNodes(i).InnerText
Next
htValues.Add(node.Name, str)
Else
htValues.Add(node.Name, node.InnerText)
End If
Next

I always get node.HasChildNodes as true even though the node doesn't
have further child nodes. Because of this, I end up adding an array as
value for every node. If the values inside the node is empty then it is
working fine.

Any help is appreciated.

Regards

rjn

*** Sent via Developersdex http://www.developersdex.com ***
Apr 6 '06 #1
Share this question for a faster answer!
Share on Google+

This discussion thread is closed

Replies have been disabled for this discussion.