我有一个xml数据,我试图以正常的表格格式转换它:
<html>
<head>
<title>report</title>
<model>
<instance>
<uploaded_form_dc8u7x id="reportform">
<formhub>
<uuid/>
</formhub>
<household_number/>
<Survey_Name/>
<photo/>
<city/>
<date/>
<survey/>
<start/>
<end/>
<meta>
<instanceID/>
</meta>
</uploaded_form_dc8u7x>
</instance>
<bind constraint=" /uploaded_form_dc8u7x/household_number >= 2" nodeset="/uploaded_form_dc8u7x/household_number" required="true()" type="int"/>
<bind nodeset="/uploaded_form_dc8u7x/Survey_Name" relevant=" /uploaded_form_dc8u7x/household_number > 02" required="true()" type="string"/>
<bind nodeset="/uploaded_form_dc8u7x/photo" required="true()" type="binary"/>
<bind nodeset="/uploaded_form_dc8u7x/city" required="true()" type="select"/>
<bind nodeset="/uploaded_form_dc8u7x/date" required="true()" type="dateTime"/>
<bind nodeset="/uploaded_form_dc8u7x/survey" required="true()" type="select1"/>
<bind preload="timestamp" preloadParams="start" nodeset="/uploaded_form_dc8u7x/start" type="dateTime"/>
<bind preload="timestamp" preloadParams="end" nodeset="/uploaded_form_dc8u7x/end" type="dateTime"/>
<bind calculate="concat('uuid:', uuid())" nodeset="/uploaded_form_dc8u7x/meta/instanceID" readonly="true()" type="string"/>
<bind calculate="'05ef936fe45e41d1bc08474399d64191'" nodeset="/uploaded_form_dc8u7x/formhub/uuid" type="string"/>
</model>
</head>
<body>
<input ref="/uploaded_form_dc8u7x/household_number">
<label>Household Number</label>
</input>
<input ref="/uploaded_form_dc8u7x/Survey_Name">
<label>Survey Name</label>
</input>
<upload mediatype="image/*" ref="/uploaded_form_dc8u7x/photo">
<label>photo</label>
</upload>
<select ref="/uploaded_form_dc8u7x/city">
<label>city</label>
<item>
<label>pune</label>
<value>pune01</value>
</item>
<item>
<label>mumbai</label>
<value>mumbai02</value>
</item>
<item>
<label>ahmednagar</label>
<value>ahmednagar03</value>
</item>
<item>
<label>delhi</label>
<value>delhi04</value>
</item>
</select>
<input ref="/uploaded_form_dc8u7x/date">
<label>date</label>
</input>
<select1 ref="/uploaded_form_dc8u7x/survey">
<label>survey</label>
<item>
<label>xyz</label>
<value>xyz1</value>
</item>
<item>
<label>abc</label>
<value>abc1</value>
</item>
</select1>
</body>
</html>
我试图以表格的形式获取数据:
city survey
Pune abc
mumbai xyz
ahmednagar
delhi
任何人都可以帮我解决这个问题吗?
实现这一目标的选择查询应该是什么?
我试图通过postgresSQL以表格格式选择数据。我想&#34; city&#34;和&#34;调查&#34;作为单独的列及其提到的数据。
我尝试了以下查询:
SELECT xpath('/html/body/input/label/text()', xml_content) as house_number from logger_xform;
它给我一行而不是单独的列:
&#34; {ABC,XYZ}&#34 ;;&#34; {普纳,孟买,阿迈德那格尔,德里}&#34;
答案 0 :(得分:1)
试试这个:
with table1 as (select $$<html>
<head>
<title>report</title>
<model>
<instance>
<uploaded_form_dc8u7x id="reportform">
<formhub>
<uuid/>
</formhub>
<household_number/>
<Survey_Name/>
<photo/>
<city/>
<date/>
<survey/>
<start/>
<end/>
<meta>
<instanceID/>
</meta>
</uploaded_form_dc8u7x>
</instance>
<bind constraint=" /uploaded_form_dc8u7x/household_number >= 2" nodeset="/uploaded_form_dc8u7x/household_number" required="true()" type="int"/>
<bind nodeset="/uploaded_form_dc8u7x/Survey_Name" relevant=" /uploaded_form_dc8u7x/household_number > 02" required="true()" type="string"/>
<bind nodeset="/uploaded_form_dc8u7x/photo" required="true()" type="binary"/>
<bind nodeset="/uploaded_form_dc8u7x/city" required="true()" type="select"/>
<bind nodeset="/uploaded_form_dc8u7x/date" required="true()" type="dateTime"/>
<bind nodeset="/uploaded_form_dc8u7x/survey" required="true()" type="select1"/>
<bind preload="timestamp" preloadParams="start" nodeset="/uploaded_form_dc8u7x/start" type="dateTime"/>
<bind preload="timestamp" preloadParams="end" nodeset="/uploaded_form_dc8u7x/end" type="dateTime"/>
<bind calculate="concat('uuid:', uuid())" nodeset="/uploaded_form_dc8u7x/meta/instanceID" readonly="true()" type="string"/>
<bind calculate="'05ef936fe45e41d1bc08474399d64191'" nodeset="/uploaded_form_dc8u7x/formhub/uuid" type="string"/>
</model>
</head>
<body>
<input ref="/uploaded_form_dc8u7x/household_number">
<label>Household Number</label>
</input>
<input ref="/uploaded_form_dc8u7x/Survey_Name">
<label>Survey Name</label>
</input>
<upload mediatype="image/*" ref="/uploaded_form_dc8u7x/photo">
<label>photo</label>
</upload>
<select ref="/uploaded_form_dc8u7x/city">
<label>city</label>
<item>
<label>pune</label>
<value>pune01</value>
</item>
<item>
<label>mumbai</label>
<value>mumbai02</value>
</item>
<item>
<label>ahmednagar</label>
<value>ahmednagar03</value>
</item>
<item>
<label>delhi</label>
<value>delhi04</value>
</item>
</select>
<input ref="/uploaded_form_dc8u7x/date">
<label>date</label>
</input>
<select1 ref="/uploaded_form_dc8u7x/survey">
<label>survey</label>
<item>
<label>xyz</label>
<value>xyz1</value>
</item>
<item>
<label>abc</label>
<value>abc1</value>
</item>
</select1>
</body>
</html>$$::xml xml_content)
select city,surveys[i] survey from (
select generate_subscripts(citys,1) i,unnest(citys) city,surveys from (
select xpath($$//*[@ref='/uploaded_form_dc8u7x/city']/item/label/text()$$,xml_content) citys,xpath($$//*[@ref='/uploaded_form_dc8u7x/survey']/item/label/text()$$,xml_content) surveys from table1
) a
) b