2009-06-10 12 views
5

XML::Simpleを使用してXMLファイルからデータを出力する単純なPerlプログラムを実行しようとしています。 は、しかし、私は取得していますエラーは次のとおりです。なぜXML:Simpleは「要素が見つかりません」と不平を言うのですか?

 
no element found at line 15, column 0, byte 308 at /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi/XML/Parser.pm line 185 

次のようにXMLファイルには、次のとおりです。

<?xml version="1.0"?> 
<customer-data> 
<customer> 
<first_name>Frank</first_name> 
<last_name>Sanbeans</last_name> 
<dob>3/10</dob> 
<email>[email protected]</email> 
</customer> 
<customer> 
<first_name>Sandy</first_name> 
<last_name>Sanbeans</last_name> 
<dob>4/15</dob> 
<email>[email protected]</email> 
</customer> 

そして、私のperlのコードは次のとおりです。

use strict; 
use XML::Simple; 

my $xml = XMLin('./test.xml',forcearray => 1); 
foreach my $customer (@{$xml->{customer}}) { 
    print "Name: $customer->{first_name}->[0] "; 
    print "$customer->{last_name}->[0]\n"; 
    print "Birthday: $customer->{dob}->[0]\n"; 
    print "E-mail Address: $customer->{email}->[0]\n"; 
} 

どのようにこれをすることができ一定 ?

ありがとうございます。

答えて

7

文書の末尾に顧客データタグが必要な場合は、フォームを整形する必要があります。そのため、パーサーはファイルの末尾にバーフを表示します。

0

このような性質のエラーを考えれば、データファイルのどこにエラーがありますか?それは行番号と列番号を与えますが、ほとんどの場合、列番号は数千になり、ファイルには存在しません。その質問に対する私の答えは、あなたがエラーがどこにあるか検索したい場合は、このコードを使用して、次のとおりです。

use XML::SAX; 
use XML::LibXML::SAX; 
$XML::Simple::PREFERRED_PARSER = 'XML::LibXML::SAX'; 

しかし、あなたがエラーを設置したらXML :: SAXが実際に解析するにはあまりにもうるさいですので、それをコメントアウト実際のXML

関連する問題