Здравствуйте, ребята. Я пытаюсь использовать модуль TWIG для удаления некоторых узлов в файле и печати в новом файле.Это 2-байтовые файлы, поэтому я попытался проанализировать свой кусок XML по фрагменту, но кажется, что метод, который я использую, не работает, потому что мой файл XML поврежден в конце, это из-за сброса, который не читает весь файл
Здесь код
#------------------------------------------------------------------------------
# This function is to add a twig handler to remove the node in parameter
#------------------------------------------------------------------------------
sub delete_node {
#------------------------------------------------------------------------------
my ($node_to_delete,$file_to_read) = @_;
copy($file_to_read,$file_to_read.'-tmp_'.$dateLog.'.xml')
open my $file_end, '>', $file_to_read.'-parsed_'.$dateLog.'.xml'
my $handlers = {$node_to_delete => section_delete_node($file_end)};
my $twig = new XML::Twig(pretty_print => 'indented',
twig_handlers => $handlers,)->parsefile($file_to_read);
close $file_end;
if (-s $file_to_read.'-parsed_'.$dateLog.'.xml') {
move($file_to_read.'-parsed_'.$dateLog.'.xml', $file_to_read);
}
else {
move($file_to_read.'-tmp_'.$dateLog.'.xml', $file_to_read);
}
}
#------------------------------------------------------------------------------
# This function remove the node in parameter
#------------------------------------------------------------------------------
sub section_delete_node {
my ($file_end)= @_;
return sub {
my( $t, $section)= @_;
$section->delete();
$t -> flush($file_end);
}
}
Я хочу, например, удалить Dob узла в моем файле
<?xml version="1.0" encoding="UTF-8"?>
<record category="B" editor="" entered="2000-12-04" sub-category="PEP" uid="7320" updated="2018-12-12">
<person ssn="" e-i="E">
<title xsi:nil="true"/>
<position xsi:nil="true"/>
<names>
<first_name/>
<last_name>BA</last_name>
</names>
<agedata>
<age xsi:nil="true"/>
<as_of_date xsi:nil="true"/>
<dob xsi:nil="true"/>
<dobs>
<dob xsi:nil="true"/>
</dobs>
<deceased xsi:nil="true"/>
</agedata>
</person>
<details>
<id_numbers>
<id loc="INT" type="">fd</id>
</id_numbers>
<place_of_birth xsi:nil="true"/>
<locations>
<location country="df" city="re" state="">Shahrara</location>
</locations>
</details>
</record>
И вот результат
<?xml version="1.0" encoding="UTF-8"?>
<record category="B" editor="" entered="2000-12-04" sub-category="PEP" uid="7320" updated="2018-12-12">
<person ssn="" e-i="E">
<title xsi:nil="true"/>
<position xsi:nil="true"/>
<names>
<first_name/>
<last_name>BA</last_name>
</names>
<agedata>
<age xsi:nil="true"/>
<as_of_date xsi:nil="true"/>
<deceased xsi:nil="true"/>
</agedata>
</person>
</record>
<details>
<id_numbers>
<id loc="INT" type="">fd</id>
</id_numbers>
<place_of_birth xsi:nil="true"/>
<locations>
<location country="df" city="re" state="">Shahrara</location>
</locations>
</details>
Если выиметь некоторую помощь, это было бы здорово.Большое спасибо