我想从父标记lang
中提取属性styling
值。我如何获得这个?
我使用的是libxml。
我尝试getAttribute
,但它不适用于父标记。
<styling lang="en-US">
<style id="jason" tts:color="#00FF00" />
<style id="violet" tts:color="#FF0000" />
<style id="sarah" tts:color="#FFCC00" />
<style id="eileen" tts:color="#3333FF" />
</styling>
答案 0 :(得分:3)
我认为“父标签”是指根元素。你可能想要documentElement
方法,一个la:
#!/usr/bin/env perl
use v5.12;
use XML::LibXML 1.70;
my $doc = 'XML::LibXML'->new(recover => 1)->parse_fh(\*DATA);
say "GOT: ", $doc->documentElement->getAttribute('lang');
__DATA__
<styling lang="en-US">
<style id="jason" tts:color="#00FF00" />
<style id="violet" tts:color="#FF0000" />
<style id="sarah" tts:color="#FFCC00" />
<style id="eileen" tts:color="#3333FF" />
</styling>
答案 1 :(得分:3)
正如您所提到的getAttribute
我假设您正在使用XML::LibXML
。下面是一个示例,其中包含两个获取属性值的方法,一个使用XPath,另一个使用getAttribute
调用:
#!/usr/bin/perl
use strict;
use XML::LibXML;
my $xml = <<'EOF';
<styling lang="en-US" xmlns:tts="something">
<style id="jason" tts:color="#00FF00" />
<style id="violet" tts:color="#FF0000" />
<style id="sarah" tts:color="#FFCC00" />
<style id="eileen" tts:color="#3333FF" />
</styling>
EOF
print XML::LibXML->new->parse_string($xml)->findvalue('/styling/@lang'), "\n";
print XML::LibXML->new->parse_string($xml)->documentElement->getAttribute('lang'), "\n";
答案 2 :(得分:1)
#!/usr/bin/perl
# use module
use XML::Simple;
use Data::Dumper;
# create object
$xml = new XML::Simple;
# read XML file
$data = $xml->XMLin("data.xml");
$data->{styling}{lang};