使用Perl从xml文件中提取字符串

shl*_*oro 2 xml perl xml-parsing

我需要使用Perl 提取关联rightmh =之后放置的字符串.

在此示例中:"0x42001dc"和"0x4200000".

每个字符串将添加到同一个数组中.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<association-response-list xmlns="http://url.com">
<association-responses>
<association rightmh="0x42001dc" leftmh="0x4055246" rh="0x1003b"/>
<association rightmh="0x4200000" leftmh="0x455246" rh="0x1003b"/>
</association-responses>
</association-response-list>
Run Code Online (Sandbox Code Playgroud)

cho*_*oba 9

使用XML解析器,例如XML :: LibXML:

#!/usr/bin/perl
use warnings;
use strict;

use XML::LibXML;

my $xml = << '__XML__';
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<association-response-list xmlns="http://url.com">
<association-responses>
<association rightmh="0x42001dc" leftmh="0x4055246" rh="0x1003b"/>
<association rightmh="0x4200000" leftmh="0x455246" rh="0x1003b"/>
</association-responses>
</association-response-list>
__XML__

my $doc = 'XML::LibXML'->load_xml(string => $xml);

my @rightmh;
push @rightmh, $_->value for $doc->findnodes('//@rightmh');
print "@rightmh\n";
Run Code Online (Sandbox Code Playgroud)

  • @mirod:这是因为命名空间.必须注册它并在XPath表达式中使用前缀. (2认同)