0

我在 PostgreSQL 数据库中存储了以下 XML 数据(在名为 的列中result,类型为 XML):

<are:Ares_odpovedi xmlns:are="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_answer_adr/v_2.0.0" xmlns:dtt="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_datatypes/v_1.0.4" xmlns:udt="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/uvis_datatypes/v_1.0.1" odpoved_datum_cas="2013-09-25T13:20:30" odpoved_pocet="1" odpoved_typ="Stdadr" vystup_format="XML" xslt="klient" validation_XSLT="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_odpovedi.xsl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_answer_adr/v_2.0.0 http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_answer_adr/v_2.0.0/ares_answer_adr.xsd" Id="ares">
  <are:Odpoved>
    <dtt:Pomocne_ID>1</dtt:Pomocne_ID>
    <dtt:Stdadr_dotaz>
      <dtt:Typ_odkazu>0</dtt:Typ_odkazu>
      <dtt:Adresa_ARES>
        <dtt:Nazev_obce>Hlučín</dtt:Nazev_obce>
        <dtt:Nazev_ulice>Jana Nerudy</dtt:Nazev_ulice>
      </dtt:Adresa_ARES>
    </dtt:Stdadr_dotaz>
    <dtt:Stdadr_odpoved>
      <dtt:Vsechna_slova>
        <dtt:Pocet_nalezenych>1</dtt:Pocet_nalezenych>
        <dtt:Pocet_navracenych>1</dtt:Pocet_navracenych>
        <dtt:Seznam_navracenych>     
          <dtt:Priz_adr>
            <dtt:Priznaky>99</dtt:Priznaky>
            <dtt:Vstup>110111190010111119111910</dtt:Vstup>
            <dtt:Vystup>66691169669</dtt:Vystup>
            <dtt:Prirazeni>22222229111122222921192</dtt:Prirazeni>
          </dtt:Priz_adr>
        </dtt:Seznam_navracenych>
      </dtt:Vsechna_slova>
    </dtt:Stdadr_odpoved>
  </are:Odpoved>
</are:Ares_odpovedi>

我想使用xpath(). 提取Nazev_ulice我到目前为止:

select 
 xpath('//dtt:Nazev_ulice/text()',result,
 ARRAY[
  ARRAY['are','http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_answer_adr/v_2.0.0'],
  ARRAY['dtt', 'http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/uvis_datatypes/v_1.0.1']
])    
from xml_data;

但是,这会返回空结果 ( {})。返回 element 值的正确语法是Nazev_ulice什么?

注意:我尝试设置 SQLFiddle 演示,但对于我的查询,我得到:Method org.postgresql.jdbc3.Jdbc3Array.getArrayImpl(long,int,Map) is not yet implemented

SQLFiddle

4

1 回答 1

1

您查询中的dtt命名空间似乎是错误的。

在您的 XML 中:

xmlns:dtt="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_datatypes/v_1.0.4"

在您的查询中:

ARRAY['dtt', 'http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/uvis_datatypes/v_1.0.1']
于 2013-09-25T14:10:23.690 回答