Thread: Re: xpath functionerror

Re: xpath functionerror

From
David Johnston
Date:
sparikh wrote
> Hi,
>
> My current database version is "PostgreSQL 9.1.11 on
> x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat
> 4.4.7-3), 64-bit".
>
> I am trying to use function xpath in my query and got following error.
>
>  "ERROR:  function xpath(unknown, text) does not exist at character 8
> HINT:  No function matches the given name and argument types. You might
> need to add explicit type casts.
>
> I could see the library pgxml.so libray in /usr/pgsql-9.1/lib . Could
> someone please advise me what more needs to be done in order to run xpath
> queris?
>
> Thanks in advance.

The valid function signature is:

xpath(xpath text, xmlcontent xml, [ nsarray text[][] ])

http://www.postgresql.org/docs/9.1/static/functions-xml.html

The "unknown" above will be converted to "text" but the "text" above will
never be converted to "xml".  You must perform this conversion yourself and
pass the converted value - now of type xml - to the function.

The documentation explains how to perform this conversion.

David J.




--
View this message in context: http://postgresql.1045698.n5.nabble.com/xpath-functionerror-tp5793724p5793727.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


Re: xpath functionerror

From
David Johnston
Date:
sparikh wrote
> Thanks David for your quick response. My original objective was to get the
> value of a particular node in xml which is stored as text datatype in the
> table.
>
> For example :
>
>
> <?xml version="1.0"?>
> -
> <settings>
> -
> <F999>
> <amperage>
> 16
> </amperage>
> <amperagesteps/>
> </F9999>
> </settings>
> I want to extract the value of amperage as '16'. Like that I may have many
> nodes in xml want to get the report to show them in different columns. I
> used to do this with oracle using xml functions provided.
>
> Trying to figure out same in postgres.
>
> Thanks again for your help.

And the same goes for PostgreSQL but you need to use the correct data types;
xml functions operate on XML instead of TEXT because that way they don't
really need to deal with bad text input - the type conversion function takes
care of making sure the text is valid XML.

David J.





--
View this message in context: http://postgresql.1045698.n5.nabble.com/xpath-functionerror-tp5793724p5793742.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


Re: xpath functionerror

From
sparikh
Date:
Thanks David for your quick response. My original objective was to get the
value of a particular node in xml which is stored as text datatype in the
table.

For example :


<?xml version="1.0"?>
-<settings>-<F999><amperage>16</amperage><amperagesteps/></F9999></settings>

I want to extract the value of amperage as '16'. Like that I may have many
nodes in xml want to get the report to show them in different columns. I
used to do this with oracle using xml functions provided.

Trying to figure out same in postgres.

Thanks again for your help.





--
View this message in context: http://postgresql.1045698.n5.nabble.com/xpath-functionerror-tp5793724p5793740.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.