Postgresql 用Postgres解析XML数据

Postgresql 用Postgres解析XML数据,postgresql,xpath,postgresql-9.2,Postgresql,Xpath,Postgresql 9.2,PostgreSQL 9.2.4 我很抱歉,如果我添加了一个重复的主题,但我似乎还没有弄明白。我想解析存储在postgres表中的XML数据 例如: select program_information.description FROM program_information WHERE id = 8768787; 为我提供如下输出: <?xml version="1.0"?> <ProgramInformation> <BasicDescription>

PostgreSQL 9.2.4

我很抱歉,如果我添加了一个重复的主题,但我似乎还没有弄明白。我想解析存储在postgres表中的XML数据

例如:

select program_information.description FROM program_information WHERE id = 8768787;
为我提供如下输出:

<?xml version="1.0"?>
<ProgramInformation>
  <BasicDescription>
    <Title type="original">Zla smrt</Title>
    <Synopsis length="short">Pet prijateljev, starih nekaj čez dvajset let, v samotni koči najde Knjigo mrtvih. S posnetka, ki so ga napravili arheologi, izvedo, da je bilo starodavno besedilo odkrito med kandarijskimi ruševinami sumerske civilizacije.</Synopsis>
    <Keyword type="secondary"></Keyword>
    <ParentalGuidance>
      <mpeg7:ParentalRating href="rn:mpeg:MPAAParentalRatingCS:PG">
        <mpeg7:Name>PG</mpeg7:Name>
      </mpeg7:ParentalRating>
    </ParentalGuidance>
    <CreditsList>
      <CreditsItem role="urn:tva:metadata:TVARoleCS:ACTOR">
        <PersonName>
          <mpeg7:GivenName>Bruce</mpeg7:GivenName>
          <mpeg7:FamilyName>Campbell</mpeg7:FamilyName>
        </PersonName>
      </CreditsItem>
      <CreditsItem role="urn:tva:metadata:TVARoleCS:ACTOR">
        <PersonName>
          <mpeg7:GivenName>Ellen</mpeg7:GivenName>
          <mpeg7:FamilyName>Sandweiss</mpeg7:FamilyName>
        </PersonName>
      </CreditsItem>
      <CreditsItem role="urn:tva:metadata:TVARoleCS:ACTOR">
        <PersonName>
          <mpeg7:GivenName>Betsy</mpeg7:GivenName>
          <mpeg7:FamilyName>Baker</mpeg7:FamilyName>
        </PersonName>
      </CreditsItem>
      <CreditsItem role="urn:tva:metadata:TVARoleCS:DIRECTOR">
        <PersonName>
          <mpeg7:GivenName>Sam</mpeg7:GivenName>
          <mpeg7:FamilyName>Raimi</mpeg7:FamilyName>
        </PersonName>
      </CreditsItem>
    </CreditsList>
    <ReleaseInformation>
      <ReleaseDate>
        <Year>1981</Year>
      </ReleaseDate>
    </ReleaseInformation>
  </BasicDescription>
  <AVAttributes>
    <AudioAttributes>
      <NumOfChannels>2</NumOfChannels>
    </AudioAttributes>
  </AVAttributes>
</ProgramInformation>
我已经尝试使用xpath,但到目前为止还没有解决方案…:/

有人能告诉我正确的问题吗?谢谢大家!


M

您的XML文档缺少名称空间声明。应该是这样吗?我在
中手动添加了一个名称空间,它成功了

<ProgramInformation xmlns:mpeg7="http://mpeg7.io">

您能提供到目前为止一直在尝试的xpath查询吗?还有,名称空间
mpeg7
是否有声明的前缀?我在这个xml文档中也找不到值
8768787
。PostgreSQL 9.2.4很抱歉响应太晚。这就是我必须处理的输出。我设法从中获得了标题、概要和评级。你能帮我弄到演员和导演的名字吗,那么给我名字和家庭名字。我就是弄不出来。谢谢
<ProgramInformation xmlns:mpeg7="http://mpeg7.io">
SELECT 
  XPATH('//BasicDescription/Title/text()', t.xml) AS title,
  XPATH('//BasicDescription/Synopsis/text()', t.xml) AS synopsis,
  XPATH('//mpeg7:ParentalRating/mpeg7:Name/text()', t.xml,ARRAY[ARRAY['mpeg7', 'http://mpeg4.io']]) AS parentalRating
FROM t;

    title     |                                                                                                              synopsis                                                                                                               | parentalrating 
--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------------
 {"Zla smrt"} | {"Pet prijateljev, starih nekaj čez dvajset let, v samotni koči najde Knjigo mrtvih. S posnetka, ki so ga napravili arheologi, izvedo, da je bilo starodavno besedilo odkrito med kandarijskimi ruševinami sumerske civilizacije."} | {PG}
(1 Zeile)