Autor Zpráva
Fastman
Profil
Zdravím,

soubor (.XML), který musím přeložit, tak obsahuje přes 6 000 řádků, jenže se souborem se pracuje poměrně těžce:

<phrase title="1_day_ago" addon_id="XF" version_id="1010010" version_string="1.1.0 Alpha"><![CDATA[One day ago]]></phrase>
<phrase title="1_month_ago" addon_id="XF" version_id="1010010" version_string="1.1.0 Alpha"><![CDATA[One month ago]]></phrase>
<phrase title="1_time" addon_id="XF" version_id="2000010" version_string="2.0.0 Alpha"><![CDATA[1 time]]></phrase>

Jak získám samotný text do souboru? Jak tento text v přeložené podobě nahradím zpět na původní místo do .XML?

One day ago
One month ago
1 time

Děkuji za odpověď.
DarkMeni
Profil
Třeba přes SimpleXML
<pre>
<?php
$xml_phrases = '<phrase title="1_day_ago" addon_id="XF" version_id="1010010" version_string="1.1.0 Alpha"><![CDATA[One day ago]]></phrase>
<phrase title="1_month_ago" addon_id="XF" version_id="1010010" version_string="1.1.0 Alpha"><![CDATA[One month ago]]></phrase>
<phrase title="1_time" addon_id="XF" version_id="2000010" version_string="2.0.0 Alpha"><![CDATA[1 time]]></phrase>';

$phrases = simplexml_load_string("<phrases>$xml_phrases</phrases>", null, LIBXML_NOCDATA);

foreach($phrases as $phrase)
{    
    echo $phrase.PHP_EOL;
}

?>



Nakonec teda asi pro nahrazení textového uzlu v xml bude potřeba použít spíš DOMDocument.


Tak SimpleXML naonec umí taky upravovat obsah, akorát jsem k tomu špatně přistupoval.
<pre>
<?php
$xml_phrases = '<phrase title="1_day_ago" addon_id="XF" version_id="1010010" version_string="1.1.0 Alpha"><![CDATA[One day ago]]></phrase>
<phrase title="1_month_ago" addon_id="XF" version_id="1010010" version_string="1.1.0 Alpha"><![CDATA[One month ago]]></phrase>
<phrase title="1_time" addon_id="XF" version_id="2000010" version_string="2.0.0 Alpha"><![CDATA[1 time]]></phrase>';

$phrases = simplexml_load_string("<phrases>$xml_phrases</phrases>", null, LIBXML_NOCDATA);

for($i = 0; $i < $phrases->count(); $i++)
{
    $phrases->phrase[$i] = $i; // misto $i za = by tu bylo nahrazeni na prelozeny text
}

var_dump($phrases);
var_dump($phrases->phrase[0]); // atributy zustanou

?>

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0