извините, что спрашиваю снова и снова, потому что не хватает знаний в Perl, и я новичок в языке программирования.
Моя настоящая проблема заключается в том, что я извлекаю некоторые узлы из нескольких файлов и сохраняю их в строке, и в этой строке у меня есть несколько повторяющихся строк, поэтому мне нужно удалить повторяющиеся строки. поэтому я попытался после вашего предложения, как это.
#!/usr/bin/perl
use warnings;
use strict;
use XML::LibXML;
use Carp;
use File::Find;
use File::Spec::Functions qw( canonpath );
use XML::LibXML::Reader;
my @ARGV ="c:/main/work";die "Need directories\n" unless @ARGV;
my $all="<DTCSpecification xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";
find(
sub {
return unless ( /(_tr\.xml)$/ and -f );
extract_information();
return;
},
@ARGV
);
my $elem;
sub extract_information {
my $path = $_;
if ( my $reader = XML::LibXML::Reader->new( location => $path )) {
while ( $reader->nextElement( 'university' )) {
$elem = $reader->readOuterXml();
$all=$all.$elem;
}
}
return;
}
my $so="</DTCSpecification>";
$all= $all.$so;
my $doc = XML::LibXML->load_xml( string=>$all);
my %seen;
foreach my $uni ( $doc->findnodes('//university') )
my $name = $uni->find('Code');
print "'$name' duplicated\n",
$uni->unbindNode() if $seen{$name}++; # Remove if seen before
}
$all = $all.$doc->toString;
print $all;
это печать два раза первый раз с повторной информацией и второй раз без повторения. Я так старался, но не могу понять, почему его печатали два раза. Как устранить печать с повторяющейся информацией. а также он удаляет узлы в соответствии с элементом «код», поэтому его удаляет узел, когда элемент кода встречается во второй раз, но иногда я получаю полезную информацию во втором, а не при первом появлении. Как мне это преодолеть. не могли бы вы помочь мне. Мне очень очень жаль спрашивать снова и снова и тратить ваше драгоценное время. Это моя скромная просьба.