gpt4 book ai didi

xml - 如何从postgres中的xml列中选择具有属性的数据

转载 作者:行者123 更新时间:2023-11-29 13:23:22 25 4
gpt4 key购买 nike

我有以下 xml 内容:

<?xml version="1.0" encoding="utf-8"?>
<h:html xmlns="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:jr="http://openrosa.org/javarosa" xmlns:orx="http://openrosa.org/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<h:head>
<h:title>Demo12</h:title>
<model>
<instance>
<uploaded_form_bpdwls id="Demo12">
<formhub>
<uuid/>
</formhub>
<Household_Number/>
<Survey_Name/>
<start/>
<end/>
<meta>
<instanceID/>
</meta>
</uploaded_form_bpdwls>
</instance>
</model>
</h:head>
<h:body>
<input ref="/uploaded_form_bpdwls/Household_Number">
<label>Household Number</label>
</input>
<input ref="/uploaded_form_bpdwls/Survey_Name">
<label>Survey Name</label>
</input>
</h:body>
</h:html>

在上面的 XML 内容中,

  • 在正文中,有两个具有不同属性的输入标签(即@ref="/uploaded_form_bpdwls/Household_Number)。

  • 我正在尝试通过 postgresSQL 选择表格格式的数据。我希望将“House Hold”和“Survey Name”作为单独的列。

  • 我不知道如何使用标签属性选择数据。

是否可以在单独的列下选择数据

实现此目的的选择查询应该是什么?

最佳答案

是你想要的吗? :

with table1 as (
select $$<?xml version="1.0" encoding="utf-8"?>
<h:html xmlns="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:jr="http://openrosa.org/javarosa" xmlns:orx="http://openrosa.org/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<h:head>
<h:title>Demo12</h:title>
<model>
<instance>
<uploaded_form_bpdwls id="Demo12">
<formhub>
<uuid/>
</formhub>
<Household_Number/>
<Survey_Name/>
<start/>
<end/>
<meta>
<instanceID/>
</meta>
</uploaded_form_bpdwls>
</instance>
</model>
</h:head>
<h:body>
<input ref="/uploaded_form_bpdwls/Household_Number">
<label>Household Number</label>
</input>
<input ref="/uploaded_form_bpdwls/Survey_Name">
<label>Survey Name</label>
</input>
</h:body>
</h:html>$$::xml as xml_content

)

select myarray[1] val1,myarray[2] val2 from (
select xpath('/h:html/h:body/i:input/i:label/text()',xml_content,ARRAY[ARRAY['h','http://www.w3.org/1999/xhtml'],ARRAY['i','http://www.w3.org/2002/xforms']]) myarray from table1
) a

对于多层次试试这个:

        with table1 as (
select $$<?xml version="1.0" encoding="utf-8"?>
<h:html xmlns="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:jr="http://openrosa.org/javarosa" xmlns:orx="http://openrosa.org/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<h:head>
<h:title>Demo12</h:title>
<model>
<instance>
<uploaded_form_bpdwls id="Demo12">
<formhub>
<uuid/>
</formhub>
<Household_Number/>
<Survey_Name/>
<start/>
<end/>
<meta>
<instanceID/>
</meta>
</uploaded_form_bpdwls>
</instance>
</model>
</h:head>
<h:body>
<div>
<input ref="/uploaded_form_bpdwls/Household_Number">
<label>Household Number</label>
</input>
<input ref="/uploaded_form_bpdwls/Survey_Name">
<label>Survey Name</label>
</input>
</div>
<div>
<input ref="/uploaded_form_bpdwls/Household_Number">
<label>Household Number2</label>
</input>
<input ref="/uploaded_form_bpdwls/Survey_Name">
<label>Survey Name2</label>
</input>
</div>
</h:body>
</h:html>$$::xml as xml_content

)

select myarray[1] val1,myarray[2] val2 from (
select xpath('/i:div/i:input/i:label/text()',xml_content,ARRAY[ARRAY['h','http://www.w3.org/1999/xhtml'],ARRAY['i','http://www.w3.org/2002/xforms']]) myarray from
(
select unnest(xpath('/h:html/h:body/i:div',xml_content,ARRAY[ARRAY['h','http://www.w3.org/1999/xhtml'],ARRAY['i','http://www.w3.org/2002/xforms']])) xml_content from table1
) div
) a

关于xml - 如何从postgres中的xml列中选择具有属性的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37936563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com