XPath with ADO XML

M

mjwills

All,

I am tearing my hair out on this one. I've checked Google and the
newsgroups, and can't seem to solve it...

My problem:

I have an XML document that I pass to another function with an XPath
query (note I may be using the wrong terminology - I don't use XML very
often). The function then uses that XPath query with SelectSingleNode
to get some details out of the XML document (effectively an ID for the
document).

My document is an XML representation of an ADO recordset. The query is
trying to get the FPTAdviserID out of it. Note that I have to use
SelectSingleNode (or more accurately, the code I am calling uses it for
tons of other XML files, so I don't want to fiddle with it
unnecessarily).

Code I have tried includes stuff like:

Dim x As New XmlDocument()

x.Load("d:\current\bin\Adviser.XML")


MsgBox(x.SelectSingleNode("\\xml\rs:data\z:row\@FPTAdviserID").Value)

MsgBox(x.SelectSingleNode("xml\rs:data\z:row\@FPTAdviserID").Value)
MsgBox(x.SelectSingleNode("\\xml\rs:data\z:row").Value)
MsgBox(x.SelectSingleNode("xml\rs\z").Value)
MsgBox(x.SelectSingleNode("xml\data\row").Value)

MsgBox(x.DocumentElement.SelectSingleNode("rs:data\z:row").Value)

MsgBox(x.DocumentElement.SelectSingleNode("rs:data\z:row").Value)

It just doesn't seem to like the 'rs:data' thing. There is stuff on
Google about namespaces for XML DOMs, but all the tips seem to relate
to the COM XML components, and I can't find matching suggestions for
VB.NET.

Can anyone provide the correct parameters for SelectSingleNode (note
again that I need to use SelectSingleNode)?

My XML is as follows:


<xml xmlns:s='uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882'
xmlns:dt='uuid:C2F41010-65B3-11d1-A29F-00AA00C14882'
xmlns:rs='urn:schemas-microsoft-com:rowset'
xmlns:z='#RowsetSchema'>
<s:Schema id='RowsetSchema'>
<s:ElementType name='row' content='eltOnly' rs:updatable='true'>
<s:AttributeType name='ABN' rs:number='1' rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='AdviserID' rs:autoincrement='true'>
<s:datatype dt:type='string' dt:maxLength='11'/>
</s:AttributeType>
<s:AttributeType name='Address1' rs:number='2'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='SaveDateTime'>
<s:datatype dt:type='string' dt:maxLength='60'/>
</s:AttributeType>
<s:AttributeType name='Address2' rs:number='3'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='Company'>
<s:datatype dt:type='string' dt:maxLength='60'/>
</s:AttributeType>
<s:AttributeType name='Address3' rs:number='4'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='Address1'>
<s:datatype dt:type='string' dt:maxLength='60'/>
</s:AttributeType>
<s:AttributeType name='AdviserID' rs:number='5'
rs:maydefer='true'
rs:writeunknown='true' rs:basetable='Advisers'
rs:basecolumn='Address2'>
<s:datatype dt:type='int' dt:maxLength='4'
rs:precision='10'
rs:fixedlength='true'/>
</s:AttributeType>
<s:AttributeType name='Company' rs:number='6'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='Address3'>
<s:datatype dt:type='string' dt:maxLength='50'/>
</s:AttributeType>
<s:AttributeType name='Email' rs:number='7'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='Suburb'>
<s:datatype dt:type='string' dt:maxLength='100'/>
</s:AttributeType>
<s:AttributeType name='Fax' rs:number='8' rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='State'>
<s:datatype dt:type='string' dt:maxLength='25'/>
</s:AttributeType>
<s:AttributeType name='FPTAdviserID' rs:number='9'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='Postcode'>
<s:datatype dt:type='string' dt:maxLength='20'/>
</s:AttributeType>
<s:AttributeType name='Phone' rs:number='10'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='Phone'>
<s:datatype dt:type='string' dt:maxLength='25'/>
</s:AttributeType>
<s:AttributeType name='Postcode' rs:number='11'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='Fax'>
<s:datatype dt:type='string' dt:maxLength='4'/>
</s:AttributeType>
<s:AttributeType name='SaveDateTime' rs:number='12'
rs:nullable='true' rs:maydefer='true' rs:write='true'
rs:basetable='Advisers' rs:basecolumn='Email'>
<s:datatype dt:type='dateTime' rs:dbtype='variantdate'
dt:maxLength='16' rs:fixedlength='true'/>
</s:AttributeType>
<s:AttributeType name='State' rs:number='13'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='ABN'>
<s:datatype dt:type='string' dt:maxLength='3'/>
</s:AttributeType>
<s:AttributeType name='Suburb' rs:number='14'
rs:nullable='true'
rs:maydefer='true' rs:write='true'
rs:basetable='Advisers'
rs:basecolumn='FPTAdviserID'>
<s:datatype dt:type='string' dt:maxLength='20'/>
</s:AttributeType>
<s:extends type='rs:rowbase'/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row ABN='1234987' Address1='' Address2='asdasd' Address3=''
AdviserID='2' Company='Da;lk' Email='' Fax=''
FPTAdviserID='1000100000001'
Phone='' Postcode='' SaveDateTime='2005-10-17T16:45:59'
State='' Suburb=''/>
</rs:data>
</xml>

Thanks
Matthew
 
C

Cor Ligthert [MVP]

MJwills,

Feel free to post to this newsgroup, however I see *seldom* answers in depth
about XPath in this newsgroup. In your case I would ask it in at least as
well in a more XML *document* related newsgroup.

If I process a XML document (not a dataset) in VBNet I have used in past the
document load, however now I would probably use the xmlreader/xmltextreader.

http://msdn.microsoft.com/library/d...ef/html/frlrfsystemxmlxmlreaderclasstopic.asp

This one would be my choise the xmltextreader

http://msdn.microsoft.com/library/d...tml/frlrfsystemxmlxmltextreaderclasstopic.asp

I hope this helps,

Cor
 

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