2009-06-10 26 views
5

XML dosyasındaki verileri yazdırmak için XML::Simple kullanan basit bir Perl programını çalıştırmaya çalışıyorum. Ancak, ben alıyorum hatadır:XML neden: Basit "Hiçbir öğe bulunamadı" dan şikayet?

<?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> 

Ve benim Perl kodları:

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"; 
} 

Bu nasıl olabilir şöyle

 
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 dosyasıdır sabit?

Teşekkür ederiz.

cevap

7

İyi biçimlendirilmiş bir hale getirmek için belgenin sonunda bir kapanış müşteri veri etiketine gerek duyarsınız. Bu yüzden çözümleyici dosyanın sonunda engeller.

0

Daha iyi bir soru olurdu, Bu doğanın bir hatası düşünüldüğünde, veri dosyasındaki hatanın nerede olduğunu nasıl bulabilirsiniz? Bir satır numarası ve sütun numarası verir, ancak çoğu durumda sütun numarası binlerce olur ve dosyada yoktur.

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

Ama hatayı tespit ettiğinizde bunu açıklama aslında ayrıştırmak XML :: SAX çok telaşlı olduğu için,: bu soruya benim cevabım hata nerede bulmak istediğinizde bu kodu kullanın, olduğu herhangi bir gerçek XML.

İlgili konular