0

xmlの1行ですべてを返す以下のクエリがありますが、outpupを読み取り可能な形式にする方法はありますか?以下のサンプルのように。

SELECT XMLELEMENT("rss", 
            XMLATTRIBUTES('http://www.georss.org/georss' AS "xmlns:georss"),
                    XMLELEMENT("channel",
                                 XMLAGG(XMLELEMENT("item",
                                                   XMLFOREST(title AS "title",
                                                              description AS "description",
                                                              point AS "georss:point"))))).EXTRACT('/*')
    FROM (SELECT trim(s.sitedesc) AS title, 
          'Employee Count: ' || s.sitefte || '<br /> Bldg Gross SF: ' || s.bldgarea || '<br />' || CASE WHEN s.leasestat = '0' THEN 'Owned' WHEN s.leasestat = '1' THEN 'Leased, end date: ' || trim(l.edate) END || '<br /><a href="../scripts/fmiinfo.asp?file_code=_BLDGLIST&sitecode='||trim(s.sitecode)||'&forceDB=">'||'More Details'||'</a> <br />' AS description,
          trim(s.latitude) || ' ' || trim(s.longitude) AS point
          FROM ls s
            LEFT OUTER JOIN c0 l ON l.sitecode = s.sitecode
          WHERE s.sold <> 1
            AND s.longitude != ' '
        )
;

戻り値

<rss xmlns:georss="http://www.georss.org/georss"><channel><item><title>TITLE</title><description>DESCRIPTION<description><georss:point>LAT LON</georss:point></item> ... </channel></rss>

しかし、読みやすくするために、出力をこれに近づけたいと思います。

<rss xmlns:georss="http://www.georss.org/georss">
<channel>
    <item>
        <title>TITLE</title>
        <description>DESCRIPTION</description>
        <georss:point>LAT LON</georss:point>
    </item>
...
</channel>
</rss>
4

1 に答える 1

0

次のような小さなシェルスクリプトを使用して、リターンを追加できます。

#!/bin/sh
# Usage: ./addreturns.sh foobar.xml. 

file=$1

cat $file | perl -pe 's|(<\/.*?>)|\1\n|g' | perl -pe 's|><|>\n<|g' > /tmp/newlines.xml; mv /tmp/newlines.xml $file
于 2012-12-03T19:56:38.013 に答える