Извлечение тегов XML с помощью Perl - PullRequest
1 голос
/ 22 февраля 2011

Мне нужен Perl-скрипт для разделения тегов XMl.Например:

<bgtres>
 <resume key='267298871' score='5'>
 <xpath path='xpath://resume'>
 <resume canonversion='2' dateversion='2' present='734060'>........... </resume></xpath></resume>
</bgtres>

В этом XML-файле мне нужно отделить вещи под тегом резюме (внутри xpath), тег возобновления, который появляется после xpath, должен быть извлечен из набора CV.Мне нужно сделать это в Perl Script.

Может кто-нибудь дать мне подсказку или код для выполнения этого процесса.Мне нужен Perl-скрипт для этого процесса

Заранее спасибо

Ответы [ 3 ]

5 голосов
/ 22 февраля 2011
  • см. XML :: Twig - Perl-модуль для обработки больших XML-документов в древовидном режиме.
  • или XML :: Simple - Простой APIподдерживать XML (файлы конфигурации esp)

как

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $xml = q~<?xml version='1.0'?>
<bgtres>
 <resume key='267298871' score='5'>
  <xpath path='xpath://resume'>
   <resume canonversion='2' dateversion='2' present='734060'>
   </resume>
  </xpath>
 </resume>
</bgtres>~;

print $xml,$/;

my $data = XMLin($xml);

print Dumper( $data );

foreach my $test (keys %{$data->{resume}{xpath}{resume}}){
        print"$test : $data->{resume}{xpath}{resume}->{$test}\n";
}

Вывод:

<?xml version='1.0'?>
<bgtres>
 <resume key='267298871' score='5'>
  <xpath path='xpath://resume'>
   <resume canonversion='2' dateversion='2' present='734060'>
   </resume>
  </xpath>
 </resume>
</bgtres>
$VAR1 = {
          'resume' => {
                      'xpath' => {
                                 'resume' => {
                                             'dateversion' => '2',
                                             'canonversion' => '2',
                                             'present' => '734060'
                                           },
                                 'path' => 'xpath://resume'
                               },
                      'score' => '5',
                      'key' => '267298871'
                    }
        };
dateversion : 2
canonversion : 2
present : 734060
3 голосов
/ 22 февраля 2011

Я все еще новичок в Perl, и я не эксперт в этом.Тем не менее, мне недавно пришлось проанализировать XML-файл, и в итоге я использовал XML :: DOM .Хорошо, что я увидел, что код все еще довольно легко читать, когда мне пришлось вернуться к нему через месяц, чтобы добавить больше функциональности.Вот небольшой фрагмент для печати канонверсии

use XML::DOM;
# Create instance of XML Dom Parser
my $parser = new XML::DOM::Parser;
# Read XML Doc
my $doc = $parser->parsefile ("$XMLFile");
# Fetch all resume tags
foreach my $resume ($doc->getElementsByTagName("resume")) {
    $canonversion = $resume->getAttributeNode("BuildName")->getValue;
    # Do something with it
    print $canonversion;
}

Надеюсь, что это поможет.

0 голосов
/ 22 февраля 2011

Вам нужно использовать XML Parser в Perl .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...