Hi Monks,
Once again I am fighting with XML. I would like to get values set for 'value': where the 'field name="Name"' and 'class="FILENAME' and where 'field name="Size"'. (independent the class)
The (simplified) version of the XML file is as follows:
<?xml version="1.0" encoding="UTF-16" standalone="yes"?> <files> <xml version="12.0.0.1" /> <file name="Image"> <item> <field name="Name" value="Smile.JPG" class="FILENAME"/> <field name="Compression" value="0" class="INFO"/> <field name="Type" value="OS" class="INFO"/> <field name="Size" value="4120893467kB" class="RAM"/> </item> <item> <field name="Name" value="WALLPAPER.JPG" class="FILENAME"/> <field name="Compression" value="1" class="INFO"/> <field name="Type" value="OS" class="INFO"/> <field name="Size" value="2MB" class="DISK"/> </item> </file> </files>
This is what I have so far:
#!/usr/bin/env perl use warnings; use strict; use feature qw{ say }; use XML::LibXML; my $dom = 'XML::LibXML'->load_xml(location => 'imgfile.xml'); say 'XML Version is: ', $dom->version; say 'Document encoding is: ', $dom->encoding; # RETURNS ONLY WHERE name="Name" IN ONE ITEM for my $fileline ( $dom->findnodes('/files/file[@name="Image"]/item/fi +eld[@name="Name"]') ) { say 'Name : ', $fileline->getAttribute('value'); } # RETURNS ALL VALUES IN ONE ITEM for my $fileline ( $dom->findnodes('/files/file[@name="Image"]/item/fi +eld') ) { say 'Value: ', $fileline->getAttribute('value'); } # NOT WORKING for my $fileline ( $dom->findnodes('/files/file[@name="Image"]/item') +) { say 'Name : ', $fileline->getAttribute('field[@name="Name"]/value' +); say 'Size : ', $fileline->getAttribute('field[@name="Size"]/value' +); }
Anyone can help?
In reply to LibXML: Can't get value by timtowtdi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |