0

データベースに入れたい情報を含む xml ドキュメントがあります。例:

<pc>
    <name>John</name>
    <last>Smith</last>
    <address>
        <business>
            <street>987 Broad Way</street>
            <city>New York</city>
            <state>New York</state>
        </business>
        <home>
            <street>123 Main St.</street>
            <city>Jersey City</city>
            <state>Nebraska</state>
        </home>
    </address>
    <phone>123-456-7890</phone>
</pc>

perl を使用してこのデータを解析し、mysql ステートメントを構築する予定です。次のような形式を取得する際に問題があります。

name="John"
last="Smith"
...

私がこれまでに使用しているコードは次のとおりです。

use strict;
use warnings;
use XML::LibXML;

my $filename = "sample.xml";
my $parser = XML::LibXML->new();
my $xmldoc = $parser->parse_file($filename);

for my $contact ($xmldoc->findnodes('/server')){
    print $contact->nodeName(),"\n";
    foreach my $child ($contact->findnodes('*')){
        print "\t", $child->nodeName(), ":\n";
        foreach my $grandchild ($child->findnodes('*')){
            print"\t\t", $grandchild->nodeName(), ":", $grandchild->textContent(), "\n";
        }
    }
}

私は perl をあまり使いませんし、XML::libXML ライブラリ ( http://metacpan.org/pod/XML::LibXML ) にもあまり詳しくありません。最後の子を見つけて、ノードに戻る必要があると思いますか? mysqlの「挿入」と「更新」をどのように構築すればよいかについて、私はちょっと迷っています。

4

1 に答える 1