How to implement SelectSingleNode in Compact Framework

D

Dan

I've discovered, to my annoyance, the System.XML.XmlDocument in the compact
framework does not implement either the SelectSingleNode or SelectNodes
method. How do you get around this? Thanks...Dan
 
C

Chris Tacke, eMVP

Public Function SelectSingleNode(ByVal xmldoc As XmlDocument, ByVal
sInput As String) As String

Dim sSelect() As String, sXML As String, i As Integer, xNode As
XmlNode, tNode As XmlNode

' Break down the input string

sSelect = Split(sInput, "/")

If UBound(sSelect) < 1 Then Return ""

' Get the first node

xNode = xmldoc.GetElementsByTagName(sSelect(1)).Item(0)

' go to the next-to-last element

For i = 2 To UBound(sSelect) - 1

If xNode.HasChildNodes Then

For Each tNode In xNode.ChildNodes

If tNode.Name = sSelect(i) Then

xNode = tNode

Exit For

End If

Next

Else

Return ""

End If

Next

' Handle last node or attribute

If Mid(sSelect(i), 1, 1) = "@" Then

If xNode.Attributes(Mid(sSelect(i), 2)) Is Nothing Then

Return ""

Else

Return xNode.Attributes(Mid(sSelect(i), 2)).InnerText

End If

Else

For Each tNode In xNode.ChildNodes

If tNode.Name = sSelect(i) Then

xNode = tNode

Exit For

End If

Next

If xNode Is Nothing Then Return ""

Return xNode.InnerText

End If



End Function
 
C

Chris Tacke, eMVP

No, actually SelectSingleNode is usually overkill, a resource hog, and the
XML parser in CF 1.0 is deathly slow. I'd likely use another method (and
manually parse if perf was any kind of requirement). It's just a snippet I
picked up elsewhere with the intent of integrating it into the SDF. I've
got SelectNodes somewhere too.

-Chris
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top