我有一個XML文件如何使用Perl的XML :: LibXML提取標籤中的屬性?
<PARENT >
<TAG string1="asdf" string2="asdf" >
</TAG >
</PARENT>
我想在這裏提取字符串2的值..而我也想將其設置爲一個新值..
如何做到這一點?
我有一個XML文件如何使用Perl的XML :: LibXML提取標籤中的屬性?
<PARENT >
<TAG string1="asdf" string2="asdf" >
</TAG >
</PARENT>
我想在這裏提取字符串2的值..而我也想將其設置爲一個新值..
如何做到這一點?
使用XPath表達式
use strict;
use warnings;
use XML::LibXML;
use Data::Dumper;
my $doc = XML::LibXML->new->parse_string(q{
<PARENT>
<TAG string1="asdf" string2="asdfd">
</TAG>
</PARENT>
});
my $xpath = '/PARENT/TAG/@string2';
# getting value of attribute:
print Dumper $doc->findvalue($xpath);
my ($attr) = $doc->findnodes($xpath);
# setting new value:
$attr->setValue('dfdsa');
print Dumper $doc->findvalue($xpath);
# do following if you need to get string representation of your XML structure
print Dumper $doc->toString(1);
和閱讀文檔,當然:)
你可以使用XML解析器::獲得價值以及。欲瞭解更多信息,請參閱XML::Parser documentation:
#!/usr/local/bin/perl
use strict;
use warnings;
use XML::Parser;
use Data::Dumper;
my $attributes = {};
my $start_handler = sub
{
my ($expat, $elem, %attr) = @_;
if ($elem eq 'TAG')
{
$attributes->{$attr{'string1'}} = 'Found';
}
};
my $p1 = new XML::Parser(
Handlers => {
Start => $start_handler
}
);
$p1->parsefile('test.xml');
print Dumper($attributes);
我想你可能會更好開始XML::Simple和周圍有點第一彈:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Simple;
my $xml = XMLin(\*DATA);
print $xml->{TAG}->{string2}, "\n";
$xml->{TAG}->{string2} = "asdf";
print XMLout($xml, RootName => 'PARENT');
__DATA__
<PARENT>
<TAG string1="asdf" string2="value of string 2">
</TAG>
</PARENT>
表面上看起來很簡單,但xml ::簡單的數據結構吃大的文件的內存,真的很快就會變得很神祕。 – singingfish 2009-08-08 02:18:43
@singingfish再次看看OP的帖子。他不知道能夠開始學習其他圖書館。他需要*做一點*學習*一些*,以便他能夠到達他知道你的評論意思的階段。 – 2009-08-08 02:24:24
感謝您的答覆。我在「Config file processing with LibXML2」中發現了另一個答案,我發現它非常有用。
當然,如果你想自己走DOM,你也可以這樣做。 XML :: LibXML使用W3C DOM API,這與您在Javascript中使用的API相同。所以它應該很容易熟悉(儘管API確實很糟糕,至少它是標準的)。 – jrockway 2009-08-07 04:26:12
謝謝。你能告訴我如何改變string2的值嗎? – Anandan 2009-08-07 06:23:34
@Anandan寫'temme'而不是'告訴我'並不酷。事實上,它讓一些像我這樣的人不得不花費精力來解釋你所說的話。您回答問題的答案的質量與您在撰寫清晰明確的問題時付出的努力成正比。 – 2009-08-07 14:34:31