Ik heb de volgende xml (snippet):


<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <tekstblok artikel="1">
      <target data="en-UK">
         <Productnaam>Onion box</Productnaam>
         <Subtekst>ca. 11 x 12 cm</Subtekst>
         <Waarschuwingstekst/>
      </target>
      <target data="de-DE">
         <Productnaam>Zwiebel-Dose</Productnaam>
         <Subtekst>ca. 11 x 12 cm</Subtekst>
         <Waarschuwingstekst/>
      </target>
      etc.
   </tekstblok>
</document>


Nu moet er tussen de target tags een extra tag (<taalcode>) komen waarvan de waarde afhankelijk is van de attribute "data". Ken dit of is het een kwestie van de xml als platte tekst inlezen en zoek/vervangen toepassen?
Hier kunnen we geen fatsoenlijk antwoord op geven. Waar komt de XML bijvoorbeeld vandaan?

Op basis van jouw vraag zeg ik: ja dat kan, het is immers gewoon platte tekst waar je iets tussen kan zetten.

Heb je overigens niets aan de attribuut 'data' in de target-tag? Daar staat al een taalcode.
@elwin
De xml is een lokale file.
Verhaal van "data" is dat de eindgebruiker lui is en niet van routine wil veranderen. Dus heb ik werk ;-)

@peter
Heb inmiddels gekeken naar dom en simple xml maar beide bieden niet het gewenste resultaat. Heb je wellicht een voorbeeldje?
Voor het nageslacht, dit is een oplossing:

<?PHP
//handle file
$dom=new DOMDocument();
$dom->preserveWhiteSpace=false;
$dom->load($name);
$dom->formatOutput=true;

$usernodes=$dom->getElementsByTagName('target');

foreach($usernodes as $node) {
//set taalcode
$taalcode=$taalcodes[$node->getAttribute('data')];

//insert
if($taalcode) {
$before=$node->firstChild;
$newelem=$dom->createElement('TaalCode', $taalcode);
$node->insertBefore($newelem, $before);
}
}

//save
$dom->save($name);
?>

Reageren