Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP - data z JQuery do XML

Zdravím, obrátil bych se tu na odborníky, jestli nemáte nějakej nápad.

JQuery mi vrací data v téhle podobě (níž kvůli přehlednosti), já ty data potřebuju dostat do xml, strukturu už mají, prostě z toho jen potřebuju dostat

<item>
    <name> Item 1 </name>
    <id> 1 </id>
</item>

popř.

<item>
    <name> Item 1 </name>
    <id> 1 </id>
    <sublist>
        <item>
            <name> Item 1-1 </name>
            <id> 1-1 </id>
        </item>
    </sublist>
</item>

Chvíli jsem se snažil to podle nějakých klíčů rozsekat a pak to přidávat do XML struktury (což se mi povedlo, jenže bez sublistů).
Ale když se mi v metodách začali objevovat zhovadilosti typu

return trim(explode(",",str_replace("}",null,$text[1]))[0]);

tak jsem si řekl, že by mohl existovat nějaký jednodušší způsob, bohužel jsem zatím žádný nenašel. Napadá Vás jak to vyřešit bez nutnosti si rozsekávat text.

Díky moc

JQuery output:

[
 [
  {
   "name": "Item 1",
   "id": 1
  },
  {
   "name": "Item 2",
   "id": 2
  },
  {
   "name": "Item 3",
   "id": 3,
   "children": [
    [
     {
      "name": "Item 3.1",
      "id": "3-0"
     },
     {
      "name": "Item 3.2",
      "id": "3-1"
     },
     {
      "name": "Item 3.3",
      "id": "3-2"
     }
    ]
   ]
  },
  {
   "name": "Item 4",
   "id": 4
  },
  {
   "name": "Item 5",
   "id": 5
  }
 ]
]
Předmět Autor Datum
Příklad máš třeba tady: http://www.devexp.eu/2009/04/11/php-domdocument-co nvert-array-to-xml/ Můž…
hynajs 28.07.2014 15:24
hynajs
Ještě poznámka: Tvůj problém se jmenuje PHP array to XML jQuery v něm nehraje roli, je lhostejné, ja…
hynajs 28.07.2014 15:31
hynajs
Jenže já to dostávám jako text, ne array. Vyřešil jsem to zatím takhle: private function ParseXML(…
spixik 28.07.2014 15:54
spixik
Pokud to funguje, tak už to tak nech. Jinak ten text do array bys dostal snadno pomocí funkce json_d… poslední
hynajs 28.07.2014 15:59
hynajs

Jenže já to dostávám jako text, ne array.

Vyřešil jsem to zatím takhle:

private function ParseXML($text) {
	$replace = array("[\n [","]\n]" , "{","}","children: [\n    [","]\n   ]", "," ,"\"");
	$with = array("<list>","</list>","<item>","</item>","<sublist>","</sublist>",null,null);
		
	$xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
	$xml.= str_replace($replace,$with,$text);
			
	$xml = preg_replace("/name:(.*)/", "<name>$1</name>", $xml);
	$xml = preg_replace("/id:(.*)/", "<id>$1</id>", $xml);
			
	return $xml;
}

Zpět do poradny Odpovědět na původní otázku Nahoru