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

parsing a string as XML using VB.NET

P: n/a
Hi,

I would like to know how to parse the following xml string using vb.net?
currxml="
<employee><address_2></address_2><assignments><assignment><assigned_barga ini
ng_unit></assigned_bargaining_unit><assigned_department></assigned_departmen
t><assigned_locations><assigned_location></assigned_location></assigned_loca
tions><assigned_position></assigned_position><assigned_position_department><
/assigned_position_department></assignment></assignments><category>TEAC</cat
egory><city>VICTORIA</city><country_code>CAN</country_code><demographic_barg
aining_unit></demographic_bargaining_unit><demographic_departmen t></demograp
hic_department><demographic_location></demographic_location><demographic_pos
ition></demographic_position><email></email><employee_no>202307</employee_no
<fax_no></fax_no><first_name>MURIEL</first_name><last_name>ANDREWS</last_na

me><middle_name></middle_name><most_assigned_bargaining_unit></most_assigned
_bargaining_unit><most_assigned_department></most_assigned_department><most_
assigned_location></most_assigned_location><most_assigned_position></most_as
signed_position><most_assigned_position_department ></most_assigned_position_
department><postal_code>V8S
5G5</postal_code><preferred_name></preferred_name><province_code>BC</provinc
e_code><salutation>MS</salutation><sin>706257185</sin><status>T</status><str
eet>1050 DEAL STREET</street><telephone_no></telephone_no></employee>"

here is my code so far:
Dim strreader = New StringReader(currxml)

Dim xmldoc As New XmlDocument

xmldoc.LoadXml(currxml)

reader = New XmlNodeReader(xmldoc)

While reader.Read

Select Case reader.NodeType

Case XmlNodeType.Element

If reader.Name = "category" Then

MsgBox(reader.Name)

End If

End Select

End While

I do see the read.Name as category but it doesnt give me "TEAC". I dont get
any value in the msgbox. It is blank. Am I missing something?

I see the value for city which is "VICTORIA" but the reader.Name is "".

thanks for you help,

Will
Nov 21 '05 #1
Share this Question
Share on Google+
7 Replies


P: n/a
WK6pack,

When you are lucky than it has a dataset format. Add for that a dataset from
the items to your solution and paste your file in, than you see that direct.

When not you can better take the XMLNodeReader
http://msdn.microsoft.com/library/de...classtopic.asp

I take the xmldoc only in JavaScript.

I hope this helps,

Cor
Nov 21 '05 #2

P: n/a
Hi Cor,

I'm not sure what you mean by dataset format. But I am using the
XMLNodeReader.
I would like to know how do I know the tag has a value or not.

thanks,
Will
"Cor Ligthert" <no************@planet.nl> wrote in message
news:OT**************@TK2MSFTNGP14.phx.gbl...
WK6pack,

When you are lucky than it has a dataset format. Add for that a dataset from the items to your solution and paste your file in, than you see that direct.
When not you can better take the XMLNodeReader
http://msdn.microsoft.com/library/de...classtopic.asp
I take the xmldoc only in JavaScript.

I hope this helps,

Cor

Nov 21 '05 #3

P: n/a
wk6pack,
| I would like to know how to parse the following xml string using vb.net?
I would "parse" it with either a XmlTextReader, XmlDocument, or
XPathDocument, something like:

Dim currxml As String = ...

Dim input As New StringReader(currxml)

Dim reader As New XmlTextReader(input)

If I loaded the string into an XmlDocument or an XPathDocument, I would use
the various methods on those objects (such as Select) to extract the content
that I need. Rarely would I "hand it back" to an XmlNodeReader...

| I do see the read.Name as category but it doesnt give me "TEAC". I dont
get
| any value in the msgbox. It is blank. Am I missing something?

Yes, you are confusing an Element Node with a Text Node. "<category>" is an
Element node, while "TEAC" is a Text Node which happens to be the contents
of the "<category>" Element node

| I see the value for city which is "VICTORIA" but the reader.Name is "".
Again, "VICTORIA" is a Text Node, which happens to be the contents of a
"<category>" Element node.

To see the different between the various node types, try:

Dim currxml As String = ...
Dim input As New StringReader(currxml)
Dim reader As New XmlTextReader(input)

While reader.Read
Debug.WriteLine(reader.NodeType, "node type")
Debug.WriteLine(reader.Prefix, "prefix")
Debug.WriteLine(reader.LocalName, "local name")
Debug.WriteLine(reader.Name, "name")
Debug.WriteLine(reader.NamespaceURI, "namespace")
Debug.WriteLine(reader.Value, "value")
Debug.WriteLine(Nothing)
End While

Hope this helps
Jay
"wk6pack" <wk***@sd61.bc.ca> wrote in message
news:O5**************@tk2msftngp13.phx.gbl...
| Hi,
|
| I would like to know how to parse the following xml string using vb.net?
| currxml="
|
<employee><address_2></address_2><assignments><assignment><assigned_barga ini
|
ng_unit></assigned_bargaining_unit><assigned_department></assigned_departmen
|
t><assigned_locations><assigned_location></assigned_location></assigned_loca
|
tions><assigned_position></assigned_position><assigned_position_department><
|
/assigned_position_department></assignment></assignments><category>TEAC</cat
|
egory><city>VICTORIA</city><country_code>CAN</country_code><demographic_barg
|
aining_unit></demographic_bargaining_unit><demographic_departmen t></demograp
|
hic_department><demographic_location></demographic_location><demographic_pos
|
ition></demographic_position><email></email><employee_no>202307</employee_no
|
<fax_no></fax_no><first_name>MURIEL</first_name><last_name>ANDREWS</last_na

|
me><middle_name></middle_name><most_assigned_bargaining_unit></most_assigned
|
_bargaining_unit><most_assigned_department></most_assigned_department><most_
|
assigned_location></most_assigned_location><most_assigned_position></most_as
|
signed_position><most_assigned_position_department ></most_assigned_position_
| department><postal_code>V8S
|
5G5</postal_code><preferred_name></preferred_name><province_code>BC</provinc
|
e_code><salutation>MS</salutation><sin>706257185</sin><status>T</status><str
| eet>1050 DEAL STREET</street><telephone_no></telephone_no></employee>"
|
| here is my code so far:
| Dim strreader = New StringReader(currxml)
|
| Dim xmldoc As New XmlDocument
|
| xmldoc.LoadXml(currxml)
|
| reader = New XmlNodeReader(xmldoc)
|
| While reader.Read
|
| Select Case reader.NodeType
|
| Case XmlNodeType.Element
|
| If reader.Name = "category" Then
|
| MsgBox(reader.Name)
|
| End If
|
| End Select
|
| End While
|
|
|
| I do see the read.Name as category but it doesnt give me "TEAC". I dont
get
| any value in the msgbox. It is blank. Am I missing something?
|
| I see the value for city which is "VICTORIA" but the reader.Name is "".
|
| thanks for you help,
|
| Will
|
|
Nov 21 '05 #4

P: n/a
Wk6Pack,

I checked it, your file is a normal dataset. When you open in the designer
as item an XML file and than paste your data in, than it will create for you
a dataset. When you than go to Data view below on the page, than you see a
kind of datagrid.

You can process this file as a normal dataset with
dim ds as new dataset
ds.readxml("myfile")

To get the values from by instance non strongly typed. (what you can
generate as well by right clicking on that datagrid and than do generate
dataset). However beneath non strongly typed. Than the first category from
employee is

Dim mystring as string = ds.tables("employee").Rows(0)("category")
'be aware that those columnames are case sensitive.

I hope this helps,

Cor

Nov 21 '05 #5

P: n/a
As extra tip to Cor`s thought about putting the data in a dataset

dim currxml="
<employee><address_2></address_2><assignments><assignment><assigned_barga ini
ng_unit></assigned_bargaining_unit><assigned_department></assigned_departmen
t><assigned_locations><assigned_location></assigned_location></assigned_loca
tions><assigned_position></assigned_position><assigned_position_department><
/assigned_position_department></assignment></assignments><category>TEAC</cat
egory><city>VICTORIA</city><country_code>CAN</country_code><demographic_barg
aining_unit></demographic_bargaining_unit><demographic_departmen t></demograp
hic_department><demographic_location></demographic_location><demographic_pos
ition></demographic_position><email></email><employee_no>202307</employee_no
<fax_no></fax_no><first_name>MURIEL</first_name><last_name>ANDREWS</last_na me><middle_name></middle_name><most_assigned_bargaining_unit></most_assigned
_bargaining_unit><most_assigned_department></most_assigned_department><most_
assigned_location></most_assigned_location><most_assigned_position></most_as
signed_position><most_assigned_position_department ></most_assigned_position_
department><postal_code>V8S
5G5</postal_code><preferred_name></preferred_name><province_code>BC</provinc
e_code><salutation>MS</salutation><sin>706257185</sin><status>T</status><str
eet>1050 DEAL STREET</street><telephone_no></telephone_no></employee>"
Dim xmldoc As New XmlDocument

xmldoc.LoadXml(currxml)

Dim XMLnr As New XmlNodeReader(Xmldoc.SelectSingleNode("employee"))

Dim ds As New DataSet

ds.ReadXml(XMLnr)

Dim ds As New DataSet

ds.ReadXml(XMLnr)

'to prove that it works throw a datagrid on the form

DataGrid1.DataSource = ds

happy coding :-)

M. Posseth [MCP Developer]
"Cor Ligthert" <no************@planet.nl> wrote in message
news:OJ**************@TK2MSFTNGP15.phx.gbl... Wk6Pack,

I checked it, your file is a normal dataset. When you open in the designer
as item an XML file and than paste your data in, than it will create for you a dataset. When you than go to Data view below on the page, than you see a
kind of datagrid.

You can process this file as a normal dataset with
dim ds as new dataset
ds.readxml("myfile")

To get the values from by instance non strongly typed. (what you can
generate as well by right clicking on that datagrid and than do generate
dataset). However beneath non strongly typed. Than the first category from
employee is

Dim mystring as string = ds.tables("employee").Rows(0)("category")
'be aware that those columnames are case sensitive.

I hope this helps,

Cor

Nov 21 '05 #6

P: n/a
Thanks Cor, Jay and M. Posseth. I now understand it a bit better.

Will
"Jay B. Harlow [MVP - Outlook]" <Ja************@msn.com> wrote in message
news:u2**************@TK2MSFTNGP12.phx.gbl...
wk6pack,
| I would like to know how to parse the following xml string using vb.net?
I would "parse" it with either a XmlTextReader, XmlDocument, or
XPathDocument, something like:

Dim currxml As String = ...

Dim input As New StringReader(currxml)

Dim reader As New XmlTextReader(input)

If I loaded the string into an XmlDocument or an XPathDocument, I would use the various methods on those objects (such as Select) to extract the content that I need. Rarely would I "hand it back" to an XmlNodeReader...

| I do see the read.Name as category but it doesnt give me "TEAC". I dont
get
| any value in the msgbox. It is blank. Am I missing something?

Yes, you are confusing an Element Node with a Text Node. "<category>" is an Element node, while "TEAC" is a Text Node which happens to be the contents
of the "<category>" Element node

| I see the value for city which is "VICTORIA" but the reader.Name is "".
Again, "VICTORIA" is a Text Node, which happens to be the contents of a
"<category>" Element node.

To see the different between the various node types, try:

Dim currxml As String = ...
Dim input As New StringReader(currxml)
Dim reader As New XmlTextReader(input)

While reader.Read
Debug.WriteLine(reader.NodeType, "node type")
Debug.WriteLine(reader.Prefix, "prefix")
Debug.WriteLine(reader.LocalName, "local name")
Debug.WriteLine(reader.Name, "name")
Debug.WriteLine(reader.NamespaceURI, "namespace")
Debug.WriteLine(reader.Value, "value")
Debug.WriteLine(Nothing)
End While

Hope this helps
Jay
"wk6pack" <wk***@sd61.bc.ca> wrote in message
news:O5**************@tk2msftngp13.phx.gbl...
| Hi,
|
| I would like to know how to parse the following xml string using vb.net?
| currxml="
|
<employee><address_2></address_2><assignments><assignment><assigned_barga ini |
ng_unit></assigned_bargaining_unit><assigned_department></assigned_departmen |
t><assigned_locations><assigned_location></assigned_location></assigned_loca |
tions><assigned_position></assigned_position><assigned_position_department>< |
/assigned_position_department></assignment></assignments><category>TEAC</cat |
egory><city>VICTORIA</city><country_code>CAN</country_code><demographic_barg |
aining_unit></demographic_bargaining_unit><demographic_departmen t></demograp |
hic_department><demographic_location></demographic_location><demographic_pos |
ition></demographic_position><email></email><employee_no>202307</employee_no |

<fax_no></fax_no><first_name>MURIEL</first_name><last_name>ANDREWS</last_na
|
me><middle_name></middle_name><most_assigned_bargaining_unit></most_assigned |
_bargaining_unit><most_assigned_department></most_assigned_department><most_ |
assigned_location></most_assigned_location><most_assigned_position></most_as |
signed_position><most_assigned_position_department ></most_assigned_position_ | department><postal_code>V8S
|
5G5</postal_code><preferred_name></preferred_name><province_code>BC</provinc |
e_code><salutation>MS</salutation><sin>706257185</sin><status>T</status><str | eet>1050 DEAL STREET</street><telephone_no></telephone_no></employee>"
|
| here is my code so far:
| Dim strreader = New StringReader(currxml)
|
| Dim xmldoc As New XmlDocument
|
| xmldoc.LoadXml(currxml)
|
| reader = New XmlNodeReader(xmldoc)
|
| While reader.Read
|
| Select Case reader.NodeType
|
| Case XmlNodeType.Element
|
| If reader.Name = "category" Then
|
| MsgBox(reader.Name)
|
| End If
|
| End Select
|
| End While
|
|
|
| I do see the read.Name as category but it doesnt give me "TEAC". I dont
get
| any value in the msgbox. It is blank. Am I missing something?
|
| I see the value for city which is "VICTORIA" but the reader.Name is "".
|
| thanks for you help,
|
| Will
|
|

Nov 21 '05 #7

P: n/a
thanks Cor, M. Posseth and Jay.

Will
"Jay B. Harlow [MVP - Outlook]" <Ja************@msn.com> wrote in message
news:u2**************@TK2MSFTNGP12.phx.gbl...
wk6pack,
| I would like to know how to parse the following xml string using vb.net?
I would "parse" it with either a XmlTextReader, XmlDocument, or
XPathDocument, something like:

Dim currxml As String = ...

Dim input As New StringReader(currxml)

Dim reader As New XmlTextReader(input)

If I loaded the string into an XmlDocument or an XPathDocument, I would use the various methods on those objects (such as Select) to extract the content that I need. Rarely would I "hand it back" to an XmlNodeReader...

| I do see the read.Name as category but it doesnt give me "TEAC". I dont
get
| any value in the msgbox. It is blank. Am I missing something?

Yes, you are confusing an Element Node with a Text Node. "<category>" is an Element node, while "TEAC" is a Text Node which happens to be the contents
of the "<category>" Element node

| I see the value for city which is "VICTORIA" but the reader.Name is "".
Again, "VICTORIA" is a Text Node, which happens to be the contents of a
"<category>" Element node.

To see the different between the various node types, try:

Dim currxml As String = ...
Dim input As New StringReader(currxml)
Dim reader As New XmlTextReader(input)

While reader.Read
Debug.WriteLine(reader.NodeType, "node type")
Debug.WriteLine(reader.Prefix, "prefix")
Debug.WriteLine(reader.LocalName, "local name")
Debug.WriteLine(reader.Name, "name")
Debug.WriteLine(reader.NamespaceURI, "namespace")
Debug.WriteLine(reader.Value, "value")
Debug.WriteLine(Nothing)
End While

Hope this helps
Jay
"wk6pack" <wk***@sd61.bc.ca> wrote in message
news:O5**************@tk2msftngp13.phx.gbl...
| Hi,
|
| I would like to know how to parse the following xml string using vb.net?
| currxml="
|
<employee><address_2></address_2><assignments><assignment><assigned_barga ini |
ng_unit></assigned_bargaining_unit><assigned_department></assigned_departmen |
t><assigned_locations><assigned_location></assigned_location></assigned_loca |
tions><assigned_position></assigned_position><assigned_position_department>< |
/assigned_position_department></assignment></assignments><category>TEAC</cat |
egory><city>VICTORIA</city><country_code>CAN</country_code><demographic_barg |
aining_unit></demographic_bargaining_unit><demographic_departmen t></demograp |
hic_department><demographic_location></demographic_location><demographic_pos |
ition></demographic_position><email></email><employee_no>202307</employee_no |

<fax_no></fax_no><first_name>MURIEL</first_name><last_name>ANDREWS</last_na
|
me><middle_name></middle_name><most_assigned_bargaining_unit></most_assigned |
_bargaining_unit><most_assigned_department></most_assigned_department><most_ |
assigned_location></most_assigned_location><most_assigned_position></most_as |
signed_position><most_assigned_position_department ></most_assigned_position_ | department><postal_code>V8S
|
5G5</postal_code><preferred_name></preferred_name><province_code>BC</provinc |
e_code><salutation>MS</salutation><sin>706257185</sin><status>T</status><str | eet>1050 DEAL STREET</street><telephone_no></telephone_no></employee>"
|
| here is my code so far:
| Dim strreader = New StringReader(currxml)
|
| Dim xmldoc As New XmlDocument
|
| xmldoc.LoadXml(currxml)
|
| reader = New XmlNodeReader(xmldoc)
|
| While reader.Read
|
| Select Case reader.NodeType
|
| Case XmlNodeType.Element
|
| If reader.Name = "category" Then
|
| MsgBox(reader.Name)
|
| End If
|
| End Select
|
| End While
|
|
|
| I do see the read.Name as category but it doesnt give me "TEAC". I dont
get
| any value in the msgbox. It is blank. Am I missing something?
|
| I see the value for city which is "VICTORIA" but the reader.Name is "".
|
| thanks for you help,
|
| Will
|
|

Nov 21 '05 #8

This discussion thread is closed

Replies have been disabled for this discussion.