2016-06-21 82 views
0

我有一個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 &gt;= 2" nodeset="/uploaded_form_dc8u7x/household_number" required="true()" type="int"/> 
     <bind nodeset="/uploaded_form_dc8u7x/Survey_Name" relevant=" /uploaded_form_dc8u7x/household_number &gt; 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選擇表格格式的數據。我想把「城市」和「調查」作爲單獨的列,並提及其數據。

我曾嘗試以下查詢:

SELECT xpath('/html/body/input/label/text()', xml_content) as house_number from logger_xform; 

它給我一個行,而不是單獨列的結果:

「{ABC,XYZ}」,「{浦那,孟買,阿邁德那格爾,德里}」

回答

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 &gt;= 2" nodeset="/uploaded_form_dc8u7x/household_number" required="true()" type="int"/> 
        <bind nodeset="/uploaded_form_dc8u7x/Survey_Name" relevant=" /uploaded_form_dc8u7x/household_number &gt; 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 
+0

雷米,戴的帽子給你的男人...... !!!!似乎你對這方面有很好的瞭解......我們將與你保持聯繫...... –