【发布时间】:2014-07-30 16:01:21
【问题描述】:
我正在拼命想办法解决这个问题,但没有运气。我正在尝试在 Postgres 中解析这些 XML 数据:
<map>
<entry>
<string>id</string>
<string>555</string>
</entry>
<entry>
<string>label</string>
<string>Need This Value</string>
</entry>
<entry>
<string>key</string>
<string>748</string>
</entry>
</map>
我试图在<string>label</string> 之后立即获取string 元素中的值。请注意,我正在使用的 Postgres 版本没有安装 XML (libxml) 函数。
我尝试了很多变体:
substring(xmlStringData from E'<string>label</string>\\n<string>(.*?)</string>')
但没有运气。
【问题讨论】:
-
你为什么不改用
xpath()? -
如原帖中所述,该功能未安装在我正在使用的 Postgres 数据库上,由于它是生产数据库,我无法简单地安装它。
-
正则表达式?放下它们,你会看到光明。您可以尝试匹配两个捕获 (
<string>1</string><string>2</string>),但 XML 可能非常不规则,并且您的正则表达式可能仅适用于定义明确的严格格式。 -
嗯,你提到了定义明确的严格格式,几乎把我引向了正确的方向
-
the Postgres version I'm working does not have the XML (libxml) function installed.让我们知道这个秘密怎么样?您的 Postgres 版本是什么?
标签: xml regex postgresql postgresql-9.0