Home All Groups Group Topic Archive Search About
Author
10 Jul 2006 4:23 AM
Kevin Burton
I have a table that has some data that is being read is a column with XML
data. It is typed 'text' and the server is running 2000 so I don't have an
option to type the column as XML. I would however like to  use
ExecuteXmlReader but I get an exception indicating that the data must be XML.
How do I convince the client that it is XML data?
My current query looks like:

SELECT XMLSent FROM dbo.OutboundTable WHERE documentTransactionID=xxx AND
OrderNumber='yyy'

Right now I am doing ExecuteScalar to read the XML string in. It seems silly
to read in a large chunk of "string" data, pass it to a MemoryStream, build
an XmlReader, and then use that to build an XML document (specifically an
XPath document because I want to do some XPath searches on the data). If I
can get an XmlReader directly from the SQL query via ExecuteXmlReader it
seems more efficient. Is this possible with the data structured as I
indicated? I have looked at FOR XML but I have not had good luck yet.

Any suggestions?

Thank you.

Kevin

Author
10 Jul 2006 5:04 AM
Brendan Green
So, something like this isn't working?

SELECT XMLSent FROM OutboundTable WHERE documentTransactionID = xxx AND
OrderNumber = 'yyy' FOR XML AUTO

Show quote
"Kevin Burton" <KevinBur***@discussions.microsoft.com> wrote in message
news:24BE2514-A33C-4347-8C2D-678122817DCD@microsoft.com...
>I have a table that has some data that is being read is a column with XML
> data. It is typed 'text' and the server is running 2000 so I don't have an
> option to type the column as XML. I would however like to  use
> ExecuteXmlReader but I get an exception indicating that the data must be
> XML.
> How do I convince the client that it is XML data?
> My current query looks like:
>
> SELECT XMLSent FROM dbo.OutboundTable WHERE documentTransactionID=xxx AND
> OrderNumber='yyy'
>
> Right now I am doing ExecuteScalar to read the XML string in. It seems
> silly
> to read in a large chunk of "string" data, pass it to a MemoryStream,
> build
> an XmlReader, and then use that to build an XML document (specifically an
> XPath document because I want to do some XPath searches on the data). If I
> can get an XmlReader directly from the SQL query via ExecuteXmlReader it
> seems more efficient. Is this possible with the data structured as I
> indicated? I have looked at FOR XML but I have not had good luck yet.
>
> Any suggestions?
>
> Thank you.
>
> Kevin
>
Author
11 Jul 2006 10:49 PM
Kevin Burton
The problem with this is that the whole Xml string is returned as an
attribute. This column contains an XML document as text I would like to
create an XmlReader that is positioned on this XML string like the column
data itself is an XML document. Is that possible?

Kevin

Show quote
"Brendan Green" wrote:

> So, something like this isn't working?
>
> SELECT XMLSent FROM OutboundTable WHERE documentTransactionID = xxx AND
> OrderNumber = 'yyy' FOR XML AUTO
>
> "Kevin Burton" <KevinBur***@discussions.microsoft.com> wrote in message
> news:24BE2514-A33C-4347-8C2D-678122817DCD@microsoft.com...
> >I have a table that has some data that is being read is a column with XML
> > data. It is typed 'text' and the server is running 2000 so I don't have an
> > option to type the column as XML. I would however like to  use
> > ExecuteXmlReader but I get an exception indicating that the data must be
> > XML.
> > How do I convince the client that it is XML data?
> > My current query looks like:
> >
> > SELECT XMLSent FROM dbo.OutboundTable WHERE documentTransactionID=xxx AND
> > OrderNumber='yyy'
> >
> > Right now I am doing ExecuteScalar to read the XML string in. It seems
> > silly
> > to read in a large chunk of "string" data, pass it to a MemoryStream,
> > build
> > an XmlReader, and then use that to build an XML document (specifically an
> > XPath document because I want to do some XPath searches on the data). If I
> > can get an XmlReader directly from the SQL query via ExecuteXmlReader it
> > seems more efficient. Is this possible with the data structured as I
> > indicated? I have looked at FOR XML but I have not had good luck yet.
> >
> > Any suggestions?
> >
> > Thank you.
> >
> > Kevin
> >
>
>
>
Author
11 Jul 2006 11:15 PM
Kevin Burton
When I do something like:

SELECT CAST(XMLSent AS xml) AS XMLSent FROM OutboundTable WHERE
documentTransactionID = xxx AND OrderNumber = 'yyy'

I get an error

Msg 9420, Level 16, State 1, Line 1
XML parsing: line 54, character 141, illegal xml character

THere are illegal characters in the data but I would like to remove them
without having to read the whole string in removing them and then passing the
string to build an XmlReader. If I read the whole string in and create a
memory stream then create an XmlReader from that I don't get these errors. Is
there a way to turn XML vlidation off or intercept the illegal characters as
they are encountered and replace them?

Kevin

Show quote
"Brendan Green" wrote:

> So, something like this isn't working?
>
> SELECT XMLSent FROM OutboundTable WHERE documentTransactionID = xxx AND
> OrderNumber = 'yyy' FOR XML AUTO
>
> "Kevin Burton" <KevinBur***@discussions.microsoft.com> wrote in message
> news:24BE2514-A33C-4347-8C2D-678122817DCD@microsoft.com...
> >I have a table that has some data that is being read is a column with XML
> > data. It is typed 'text' and the server is running 2000 so I don't have an
> > option to type the column as XML. I would however like to  use
> > ExecuteXmlReader but I get an exception indicating that the data must be
> > XML.
> > How do I convince the client that it is XML data?
> > My current query looks like:
> >
> > SELECT XMLSent FROM dbo.OutboundTable WHERE documentTransactionID=xxx AND
> > OrderNumber='yyy'
> >
> > Right now I am doing ExecuteScalar to read the XML string in. It seems
> > silly
> > to read in a large chunk of "string" data, pass it to a MemoryStream,
> > build
> > an XmlReader, and then use that to build an XML document (specifically an
> > XPath document because I want to do some XPath searches on the data). If I
> > can get an XmlReader directly from the SQL query via ExecuteXmlReader it
> > seems more efficient. Is this possible with the data structured as I
> > indicated? I have looked at FOR XML but I have not had good luck yet.
> >
> > Any suggestions?
> >
> > Thank you.
> >
> > Kevin
> >
>
>
>

AddThis Social Bookmark Button