XPath och feeds configuration

Events happening in the community are now at Drupal community events on www.drupal.org.
Marcus 78's picture

Hej

Sitter med konfigurationen i feeds ui och har problem med xpath.

Ska importera ett antal kurser så att de blir noder av typen course. En hel del saker att hålla reda på så jag har börjat enkelt med en liten sak, att ta in poäng och kursnamn. Inga problem att ta in kursnamn oavsett om det är svenska tecken med i men poäng (och egentligen alla fält utom beskrivning) går inte att föra över.

Testar just nu att köra in poäng i body fältet så att det inte ska vara några begränsningar i fältet så att säga (ska egentligen vara heltal).

Såhär ser min konfiguration ut nu
Den bifogade filen är en excelfil som jag döpt om.

$feeds_importer = new stdClass();
$feeds_importer->disabled = FALSE; /* Edit this to true to make a default feeds_importer disabled initially */
$feeds_importer->api_version = 1;
$feeds_importer->id = 'xml_course';
$feeds_importer->config = array(
'name' => 'XML course',
'description' => '',
'fetcher' => array(
'plugin_key' => 'FeedsFileFetcher',
'config' => array(
'allowed_extensions' => 'txt csv tsv xml opml html htm',
'direct' => 0,
'directory' => 'public://',
'allowed_schemes' => array(
'public' => 'public',
),
),
),
'parser' => array(
'plugin_key' => 'FeedsXPathParserXML',
'config' => array(
'sources' => array(
'xpathparser:0' => 'kursnamn',
'xpathparser:1' => '/poäng',
),
'rawXML' => array(
'xpathparser:0' => 0,
'xpathparser:1' => 0,
),
'context' => '//alvis/kurs',
'exp' => array(
'errors' => 1,
'debug' => array(
'context' => 'context',
'xpathparser:0' => 'xpathparser:0',
'xpathparser:1' => 0,
),
),
'allow_override' => 0,
),
),
'processor' => array(
'plugin_key' => 'FeedsNodeProcessor',
'config' => array(
'expire' => '-1',
'author' => '1',
'authorize' => 1,
'mappings' => array(
0 => array(
'source' => 'xpathparser:0',
'target' => 'title',
'unique' => 1,
),
1 => array(
'source' => 'xpathparser:1',
'target' => 'body',
'unique' => FALSE,
),
),
'update_existing' => '2',
'input_format' => 'full_html',
'skip_hash_check' => 0,
'bundle' => 'course',
),
),
'content_type' => '',
'update' => 0,
'import_period' => '-1',
'expire_period' => 3600,
'import_on_create' => 1,
'process_in_background' => 0,
);

AttachmentSize
test.xls30.76 KB

Comments

Kan du inte få ut XML filen

toelli's picture

Kan du inte få ut XML filen utan ÅÄÖ i nodnamnen?

<poäng></poäng> är inte vettig xml imo :P

eller andra namn innehåller ÅÄÖ går nog inte selecta direkt via feeds admin ui utan måste nog ske med kod och någon encoding eller replace via kod :)

Aldrig jobbat mot en xml fil vars namn är i ÅÄÖ, har du möjlighet styra över hur xmlen kommer så bör du encoda den till t.ex. poang etc :)

Samt att selectorn för poäng borde bara vara "poang" då och inte "/poang" det borde räcka :)

Contrib = Bloatware? | Outsourcing specialist located in Bangkok

oh..

toelli's picture

Sen bör du sätta ett separat fält mot GUID och köra på @id istället.. att ha title som guid känns lite osäkert :D

Contrib = Bloatware? | Outsourcing specialist located in Bangkok

Håller med om guid. Ska köra

Marcus 78's picture

Håller med om guid. Ska köra en guid med feeds tamperer ur kurskoden så borde det bli bättre.

Håller också med om att xml filen är lite sådär :) men det är en extern aktör som är lite sisådär att be om förändringar kring.

Finns det något sätt att använda tamperer för att bara plocka första värdet eller något annat sätt?

Jag har aldrig använt

toelli's picture

Jag har aldrig använt tamperer, vill jag anpassa datat inför sparning brukar jag använda feeds hookar och koda det själv, och tror tyvärr tamperer endast gör ändringar på just datat du måste endå selecta det först.

Osäker på om det är drupal eller php problemen med att anropa åäö nodenames ligger, förmodligen drupal/feeds ;)

Kan du verkligen inte få leverantören att skicka ut en XML utan ÅÄÖ i nodnamnen så kan du lösa det manuellt med denna modul jag slängde ihop lite snabbt:
http://gravitypoint.se/feeds_xml_encoder.rar

Öppna feeds_xml_encoder.module och titta på rad 5 .. där anger du sökväg till xml filen
Sedan i funktionen på rad 8 matar du in ersättningarna på samma sätt som jag visat med "förkunskap" och "ämnesområde"..

Modulen skapar en dynamisk sida på din site som du når via /sync/xml .. denna sökväg renderar sedan din xml fast med ersättningarna och du anropar denna sökväg istället i feeds... men som sagt... detta är endast en lösning om du måste lösa det hos dig och leverantören inte kan lösa det. (glöm inte byta target i feeds till det du ersätter till)

Mvh Tölli

Contrib = Bloatware? | Outsourcing specialist located in Bangkok