1

phpmyadminを使用してmysqlデータベースをxmlにエクスポートしました。これをミニドムで解析したいのですが、必要な形式でコンテンツを取得するのに問題があります。

title要約:内に含まれるテキストに変数を割り当てる必要があります<column name="news_title">This is the title</column>

抽出されたデータベースは次のようになります。

<pma_xml_export version="1.0" >
    <database name="dbname">
        <!-- Table newsbox -->
        <table name="newsbox">
            <column name="news_id">1</column>
            <column name="news_title">This is the title</column>
            <column name="news_text">This is the news text</column>
            <column name="date">Thu, 28 Feb 2008 20:10:30 -0500</column>
            <column name="author">author</column>
            <column name="category">site_announcement</column>
        </table>
    </database>
</pma_xml_export>

次のスクリプトでテキストを抽出できますが、必要な形式ではありません。

doc = parseString(document)

pmaexport = doc.getElementsByTagName("pma_xml_export")[0]
columns = pmaexport.getElementsByTagName("column")


for item in columns:
    name = item.getAttribute("name")
    text = item.firstChild.data.strip()
    print name, text

必要なのは、これらの要素のテキストコンテンツを、たとえば次のように渡すことができる変数に割り当てることができるものです。

for item in columns:
    title = ???
    text = ???
    date = ???
    author = ???

db出力が次の形式である場合、実行する<title>Here's the Title</title>例はたくさんありますが、次のようなものへの参照が見つかりません。<column name="news_title">This is the title</column>

4

1 に答える 1

1

使ってから久しぶりですが、うまくxml.dom.minidomいくはずです...

columns = [c.firstChild.data for c in pmaexport.getElementsByTagName('column') if c.getAttribute('name') == 'news_title']

さらに、リスト内包表記のように!

于 2012-04-18T01:10:05.787 に答える