1

我想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>
4

3 回答 3

3

我认为“父标签”是指根元素。您可能需要该documentElement方法,例如:

#!/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>
于 2013-07-16T08:57:48.470 回答
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";
于 2013-07-16T08:58:45.043 回答
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};
于 2013-07-16T08:51:34.083 回答