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'
rsrecision='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
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'
rsrecision='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