Here are some replacements I wrote which provide a subset of the "real"
framework:
' This function replicates the SelectSingleNod e MSXML function only
to the extent required by
' expressions such as /starting/next/next/element or
/starting/next/next/element/@attribute
Public Function SelectSingleNod e(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.GetEleme ntsByTagName(sS elect(1)).Item( 0)
' go to the next-to-last element
For i = 2 To UBound(sSelect) - 1
If xNode.HasChildN odes Then
For Each tNode In xNode.ChildNode s
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.Attribute s(Mid(sSelect(i ), 2)) Is Nothing Then
Return ""
Else
Return xNode.Attribute s(Mid(sSelect(i ), 2)).InnerText
End If
Else
For Each tNode In xNode.ChildNode s
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
' This function replicates the SelectNodes MSXML function only to
the extent required by
' expressions such as /starting/next/next/element or
/starting/next/next/element/*
Public Function SelectNodes(ByV al xmldoc As XmlDocument, ByVal
sInput As String) As XmlNode()
Dim sSelect() As String, sXML As String, i As Integer, xNode As
XmlNode, tNode As XmlNode
Dim xList() As XmlNode
' Break down the input string
sSelect = Split(sInput, "/")
If UBound(sSelect) < 1 Then Return Nothing
' Get the first node
xNode = xmldoc.GetEleme ntsByTagName(sS elect(1)).Item( 0)
' go to the next-to-last element
For i = 2 To UBound(sSelect) - 1
If xNode.HasChildN odes Then
For Each tNode In xNode.ChildNode s
If tNode.Name = sSelect(i) Then
xNode = tNode
Exit For
End If
Next
Else
Return Nothing
End If
Next
' Handle last node
If Not xNode.HasChildN odes Then Return Nothing
For Each tNode In xNode.ChildNode s
If tNode.Name = sSelect(i) Or sSelect(i) = "*" Then
' Re-size array
If xList Is Nothing Then
' First time through, create the array
ReDim xList(0)
xList(0) = Nothing
Else
' Increase size by 1
ReDim Preserve xList(xList.Len gth())
End If
xList(xList.Len gth - 1) = tNode
End If
Next
If xList(0) Is Nothing Then Return Nothing
Return xList
End Function
"e-mid" <someone@somewh ere> wrote in message
news:OP******** ******@TK2MSFTN GP10.phx.gbl...
i want to get childs of specific xml node. normally i use
xmlNodeList fooList = myNode.SelectNo des("foo");
but in compactframewor k , there is no selectNodes() method or
selectSingleNod e() method.
what else can i use instead?