Чтение нескольких текстовых значений XML с использованием XML :: Simple - PullRequest
0 голосов
/ 25 июня 2018

Я начал изучать XML::Simple модуль но я не могу понять, как читать теги и получать данные для моего использования.

Ниже приведена моя попытка разобрать небольшой раздел из файла XML. Я хочу выбрать разделенный запятыми список текстового содержимого customfieldvalue элементов.

Например, вывод должен быть таким:

print "customfieldvalue are = $myvalues \n";
# customfieldvalue are = UNIX,PERL

Я застрял после прочтения раздела XML. Пожалуйста, помогите мне достичь этого.

#!/usr/bin/perl -w

use strict;

use XML::Simple;
use Data::Dumper;

my $xml   = new XML::Simple;
my $cdata = join('', <DATA>);

my $data = $xml->XMLin($cdata, KeyAttr => ['id']);
print Dumper($cdata);

__DATA__
<customfield id="customfield_66440" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
  <customfieldname>Program</customfieldname>
  <customfieldvalues>
    <customfieldvalue key="125160"><![CDATA[UNIX]]></customfieldvalue>
    <customfieldvalue key="125160"><![CDATA[PERL]]></customfieldvalue>
  </customfieldvalues>
</customfield>

1 Ответ

0 голосов
/ 25 июня 2018

XML :: Simple говорит для использования XML :: LibXML вместо.

use XML::LibXML qw();

my $dom = XML::LibXML->load_xml(string => \<<'XML');
<customfield id="customfield_66440" key="com.atlassian.jira.plugin.system.customfieldtypes:multiselect">
    <customfieldname>Program</customfieldname>
    <customfieldvalues>
        <customfieldvalue key="125160"><![CDATA[UNIX]]></customfieldvalue>
        <customfieldvalue key="125160"><![CDATA[PERL]]></customfieldvalue>

    </customfieldvalues>
</customfield>
XML

my @values = map { $_->textContent } $dom->findnodes('//customfieldvalue');
# ("UNIX", "PERL")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...