Bug 6799 rebuild_zebra.pl -x produces invalid XML records
authorFrédéric Demians <f.demians@tamil.fr>
Sat, 27 Aug 2011 11:32:08 +0000 (13:32 +0200)
committerPaul Poulain <paul.poulain@biblibre.com>
Fri, 18 Nov 2011 22:29:08 +0000 (23:29 +0100)
This patch allow to handle properly items containing extended characters and
send valid XML records to zebraidx

Signed-off-by: Julian Maurice <julian.maurice@biblibre.com>
Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>

misc/migration_tools/rebuild_zebra.pl

index 6fa6501..fa87f22 100755 (executable)
@@ -323,19 +323,17 @@ sub export_marc_records_from_sth {
                 my @items = GetItemsInfo($record_number);
                 if (@items){
                     my $record = MARC::Record->new;
+                    $record->encoding('UTF-8');
                     my @itemsrecord;
                     foreach my $item (@items){
                         my $record = Item2Marc($item, $record_number);                        
                         push @itemsrecord, $record->field($itemtag);
                     }
                     $record->insert_fields_ordered(@itemsrecord);
-                    my $itemsxml=$record->as_xml_record();
-                    my $searchstring = '<record>\n';
-                    my $index = index($itemsxml, '<record>\n', 0);
-                    $itemsxml = substr($itemsxml, $index + length($searchstring));
-                    $searchstring = '</record>';
-                    $marcxml = substr($marcxml, 0, index($marcxml, $searchstring));
-                    $marcxml .= $itemsxml;
+                    my $itemsxml = $record->as_xml_record();
+                    $marcxml =
+                        substr($marcxml, 0, length($marcxml)-10) .
+                        substr($itemsxml, index($itemsxml, "</leader>\n", 0) + 10);
                 }
             }
             if ( $marcxml ) {