Export dat z csv do xml pouzitim php – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Export dat z csv do xml pouzitim php – PHP – Fórum – Programujte.comExport dat z csv do xml pouzitim php – PHP – Fórum – Programujte.com

 

JM
~ Anonymní uživatel
4 příspěvky
25. 6. 2020   #1
-
0
-

Zdravim,

Prosim o pomoc s touto ulohou:

Mam .csv subor: 

“ID”; “meno”;”psc”;”krajina”;”tel”;”sms!

1;”peto@”;”012 22”;”SK”;910111111;”ano”

2;”marek16”;1212;”Slovensko”;00421910112555;”nie”

3.;”janco”;99999;”CZ”;”-“;

ktory mam vyexportovat do xml suboru pouzitim PHP.

XML subor by mal vyzerat asi takto:

<order>

<id></id>

<meno></meno>

<psc></psc>

<krajina></krajina>

<tel></tel>

<sms></sms>

</order>

Dakujem za kazdu pomoc

Nahlásit jako SPAM
IP: 213.81.192.–
Kit+15
Guru
25. 6. 2020   #2
-
0
-

#1 JM
Které nástroje máš použít a kolik toho už máš?

Nahlásit jako SPAM
IP: 46.135.24.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
MilanL+1
Grafoman
25. 6. 2020   #3
-
0
-

#1 JM
kod ti tu nikdo dělat nebude, v podstatě je to pro laika na 5-10 min hledání pomocí strejdy Googla

1) vytvořit/otevřít XML soubor

2) otevřít csv soubor

3) pomocí cyklu procházet csv řádku po řádce

4) pomocí funkcí PHP nebo vlastních rozparsovat řádku CSV na jednotlivé údaje

5) uložit údaje z dané řádky dle požadované struktury do XML

variantou je zjištění struktury dle prvního řádku csv

další variantou/doplňkem je případná kontrola hodnot

Nahlásit jako SPAM
IP: 91.139.9.–
JM
~ Anonymní uživatel
4 příspěvky
25. 6. 2020   #4
-
0
-

#2 Kit
mam nieco taketo ale neviem ci to je dobre:


<?php
    $delimit = "," ;       
    $row_count = 0 ;
    $inputFilename = "data.csv" ;
 
    $outputFilename   = 'export.xml';
 
foreach ($tsvFile as $line => $row) {
if($line > 0 && $line !== ' ') {
    $xmlWriter->startElement('item');
            $xmlWriter->writeElement('id', $row[0]);
            $xmlWriter->writeElement('meno', $row[0]);
            $xmlWriter->writeElement('psc', $row[0]);
            $xmlWriter->writeElement('krajina', $row[1]);
            $xmlWriter->writeElement('tel', $row[2]);
            $xmlWriter->writeElement('sms', $row[2]);
            $xmlWriter->endElement();
    }
}
$xmlWriter->endElement();
$xmlWriter->endDocument();
?>
 
 

Nahlásit jako SPAM
IP: 213.81.192.–
JM
~ Anonymní uživatel
4 příspěvky
25. 6. 2020   #5
-
0
-

#3 MilanL
nechcem aby mi tu niekto robil kod ale poradil. Dakujem za postup ktory si mi napisal. Taky isty som nasiel na google a viem ze mam pouzit google.

Nahlásit jako SPAM
IP: 213.81.192.–
Kit+15
Guru
25. 6. 2020   #6
-
0
-
Nahlásit jako SPAM
IP: 46.135.24.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
peter
~ Anonymní uživatel
3981 příspěvků
26. 6. 2020   #7
-
0
-

   

// --- array to XML ---

// function defination to convert array to xml
public function arrayToXml( &$data_xml, $data_list=array() ) {
    foreach( $data_list as $key => $value ) {
        if (trim($key)=='')
       {continue;}
        if( is_array($value) ) {
            if( is_numeric($key) ){
                $key = "item".$key; //dealing with <0/>..<n/> issues
            }
        $new_child = $data_xml->addChild($key);
            $this->arrayToXml($new_child, $value);
        } else {
            
            if (is_numeric($key)) {// if the key is an integer, it needs text
                $key = "key".$key;
            }
            $new_child = $data_xml->addChild("$key", htmlspecialchars("$value"));
        }
     }
}

// array to csv / json
public function csvStrToCsv($input=array(), $delimiter = ',', $enclosure = '"')
    {
	if (!is_array($input))
		{return false;}
	foreach($input as $key=>$value)
		{
		if (is_array($value))
			{
			$input[$key] = $this->csvStrToCsv($value, $delimiter, $enclosure);
			}
		}
        $fp = fopen('php://temp', 'r+');	// Open a memory "file" for read/write...
        fputcsv($fp, $input, $delimiter, $enclosure);
        rewind($fp);
        $data = fread($fp, 1048576);
        fclose($fp);
        return rtrim($data, "\n");
    }


public function format($data=array(), $format='')	// output format php array (/ json / xml / csv - not implement)
	{
	if ($format=='')
		{
		return $data;
		}
	elseif ($format=='csv')
		{
		$content = '';
		$valenc = "\"";
		$coldel = ";";
		$rowdel = "\n";
//		$rowdel = "<br>";	// for html/text
		foreach ($data as $row)
			{
			$content .= $this->csvStrToCsv($row, $coldel) . $rowdel;	// excel csv, del=; enc=" row=\n
			}
		return $content;
		}
	elseif ($format=='json')
		{
		return json_encode($data);
		}
	elseif ($format=='xml')
		{
		$xml = new SimpleXMLElement('<?xml version="1.0"?><data></data>');
		$this->arrayToXml($xml, $data);
		return $xml->asXML();
		}
	}

// --- csv content to array ---
// https://www.php.net/…r-getcsv.php
public function import($content='')
	{
	$p = $this->parse;
	list($row, $col, $enc, $esc) = array($p['row'], $p['col'], $p['enc'], $p['esc']);
	$row_list = str_getcsv($content, $row); // parse the rows
	$content  = null;
	foreach($row_list as &$row)
		{
		$row = str_getcsv($row, $col, $enc, $esc); //parse the items in rows
		}
	return $row_list;
	}

Nahlásit jako SPAM
IP: 2001:718:2601:258:4dbc:3838:5a25:f2e0...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý