Skip to main content

Mapping of XML feeds conditionally using Feed Importer In Drupal 7

Map XML feeds on some basic conditions without using feeds tamper module

First, take a look at an example

<images>
   <image type="file">https://s3.amazon.com/example1.pdf</image>
   <image type="file">https://s3.amazon.com/example3.pdf</image>
   <image type="file">https://s3.amazon.com/example2.pdf</image>
   <image type="image">https://s3.amazon.com/example.jpg</image>
</images>


Case 1: If you want to import only those feeds that has type "image" then your XML Parser settings should be like Images/Image[./@type = 'image']

Case 2: Import feeds that has not file type then Images/Image[./@type != 'file']


Example 2:  

<item>
  <enclosure url="http://www.example.com/path-to-image/image1.jpg" type="image/jpeg"/>
  <enclosure url="http://www.example.com/path-to-image/image2.jpg" type="image/jpeg"/>
  <enclosure url="http://www.example.com/path-to-image/image3.jpg" type="image/jpeg"/>
  <title>Demo title 1</title>
</item>

Under XPath XML parser settings we have this set as an query to retrieve those images
field_feed_image: enclosure[1]/@url
field_feed_image: enclosure[2]/@url
field_feed_image: enclosure[3]/@url


Reference Site: https://www.drupal.org/node/1108220


Comments

Popular posts from this blog

Use Case Diagram for Online Book Store

Online Movie Ticket Booking Sequence Diagram

Linear search & Binary search using Template

Write a program to search an element from a list. Give user the option to perform Linear or Binary search. Use Template functions. #include<iostream> using namespace std; template <class T> void Lsearch(T *a, T item, int n) { int z=0; for(int i=0;i<n;i++) { if(a[i]== item) { z=1; cout<<"\n Item found at position = "<<i+1<<"\n\n"; } else if(z!=1) { z=0; } } if(z==0) cout<<"\n Item not found in the list\n\n"; } template <class T> void Bsearch(T *a, T item, int n) { int beg=0,end=n-1; int mid=beg+end/2; while((a[mid]!=item) && (n>0)) { if(item>a[mid]) beg=mid; else end=mid; mid=(beg+end)/2; n--; } if(a[mid]==item) cout<<"\n Item found at position = "<<mid+1<<"\n\n"; else cout<<"\n Item not found in the list\n\n"; } void main() { int iarr[10] = {2,42,56,86,87,99,323,546,767,886};