Mappatura di diversi feed XML e CSV

2

Non sono sicuro se questa sia la sede giusta per chiedere questo, ma qui va.

Un po 'di background.

Sto provando a creare un'app di e-commerce che consenta ai venditori di altri luoghi, come Amazon e Newegg, di importare i loro prodotti utilizzando i file di esportazione / importazione.

Un esempio potrebbe essere un utente con un feed XML simile a questo:

<?xml version="1.0" encoding="UTF-8"?>
<products>
    <product>
        <sku>12345</sku>
        <name>Dell Computer</name>
        <description>This is a very nice Dell computer. Much quality. Very speed. Great wow.</description>
    </product>
    <product>
        <sku>123456</sku>
        <name>Dell Laptop</name>
        <description>This is a Dell laptop. Much quality as well.</description>
    </product>
</products> 

Mi piacerebbe poter mappare le intestazioni alle colonne nel mio database.

es. sku -> product_sku , name -> product_name , description -> description .

Quello che sto facendo in questo momento è che non tutti i feed hanno la stessa struttura, ho sviluppato uno "strumento di mappatura" che fondamentalmente analizza il file, prende le intestazioni e lo mostra in un'interfaccia utente che consente all'utente di "mappare" "questi alla lista delle colonne del mio database.

Il problema che sto incontrando ora è che dato che i feed non sono gli stessi, faccio fatica a trovare l'elenco delle intestazioni.

La mia domanda è qual è un buon modo per affrontare questo problema? Forse sto sbagliando tutto questo.

Lo sto facendo in nodejs / javascript se è del tutto pertinente.

    
posta clueless 17.07.2015 - 14:14
fonte

3 risposte

1

Se intendi che dovrebbero essere in grado di importare i file esistenti, dovrai creare una mappatura per tradurre tutti i formati Amazon, Newegg, ... esistenti nel tuo database. Per i feed XML che significa mappare le espressioni XPath alle tue colonne. Per i feed di file flat significa mappare le intestazioni nel file flat alle colonne del database.

    
risposta data 07.06.2016 - 05:43
fonte
0

Cerca prodotti non intestazioni.

Il prodotto è l'unità di base con cui stai lavorando. Prima identificalo. Nel tuo esempio, puoi vedere che <product> è l'unico tag che ha i fratelli con lo stesso nome. Anche se lo stesso sarebbe vero per cose come <category> e <colorOption> .

Lavora con percorsi XML, non solo nomi di tag.

Lascia che un umano faccia il duro: fai in modo che i tuoi venditori scelgano le "intestazioni" direttamente dall'XML.

Visualizza l'XML (magari come una struttura di menu) e chiedi al venditore di selezionare il tag per un prodotto. Quindi evidenzia quel frammento e chiedi al venditore di selezionare il tag per ProductName e così via.

    
risposta data 10.09.2015 - 00:45
fonte
0

Dovrai mappare tutti i tag da tutti i feed al campo corretto.

Ad esempio in un feed se hai sku lo si mappa su product_sku In altri feed, hai un altro tag sku_product e ne hai bisogno mappandolo a product_sku. Dal momento che solo un tag esiste in un feed per un prodotto (si spera), puoi avere una configurazione che mappa i tag in un particolare campo di database

per esempio di Config

sku = product_sku

sku_product = product_sku

sku3 = product_sku

cat = categoria_prodotto

category = categoria_prodotto

category2 = categoria_prodotto

....

....

ora, quando analizzi il tuo xml, ti basta controllare se il tag esiste in questa configurazione e fare in modo che il campo venga mappato. Produrrà solo un tag per un determinato feed.

Dovrai creare e mantenere manualmente questa configurazione in un file o in un database e caricarla in una hashmap prima del tuo parsing.

    
risposta data 08.04.2016 - 04:08
fonte

Leggi altre domande sui tag