troubleshooting Question

XML::LibXML and Xpath syntax How do I get attribute of sibling

Avatar of trevor1940
trevor1940 asked on
PerlXMLScripting LanguagesProgramming Languages-OtherShell Scripting
2 Comments1 Solution492 ViewsLast Modified:
This is follow on fromThis Question

In the xml bellow I need to locate the next 'link' after I've located 'images' within the parent 'entry'


I found this link that suggest can use "following-sibling" can someone see what I've  done wrong?  

note I've striped the xml down to simplify

Perl script
 
!C:\strawberry\perl\bin\perl.exe

use strict;
use warnings;
use XML::LibXML;
use XML::LibXML::XPathContext;
use Data::Dump qw(dump);


my $filename = 'georss.xml';

my $dom = XML::LibXML->load_xml(location => $filename);
my $xpc = XML::LibXML::XPathContext->new($dom);
$xpc->registerNs(dft => "http://www.w3.org/2005/Atom");
$xpc->registerNs(georss => "http://www.georss.org/georss");


foreach my $Entry ($xpc->findnodes("//dft:feed/dft:entry")) {

     foreach my $Images ($xpc->findnodes("/dft:title[not(\@type='text')]", $Entry)) {
         my $ImageVal = $Images->textContent;

          ####  This finds all the Images
         print "ImageVal $ImageVal\n";
         my $link = $Images->following-sibling::link[\@href];
         print "link $link\n";
         
     }

}

georss.xml
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" >
  <entry>
    <title>fileName1.jpg</title>
     <link href="PathTo/fileName1.jpg" />
  </entry>
  <entry>
    <title>fileName2.jpg</title>
     <link href="PathTo/fileName2.jpg" />
  </entry>
  <entry>
    <title>fileName3.jpg</title>
     <link href="PathTo/fileName3.jpg" />
  </entry>
  <entry>
    <title type="text">fileName.pdf</title>
     <link type="application/pdf"  href="PathTo/fileName.pdf" />
  </entry>
    <georss:where>
     <point xmlns="http://www.opengis.net/gml" srsName="urn:ogc:crs:EPSG:4326">
      <pos>45.256 -71.92</pos>
     </point>
  </georss:where>

</feed>
ASKER CERTIFIED SOLUTION
Robert Schutt
Software Engineer

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 1 Answer and 2 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 1 Answer and 2 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros