2010-11-11 9 views
1

J'essaye de produire le dossier de xml en tant que html. Il semble que le traitement simple XML soit plus rapide que XSL sur mes fichiers (les fichiers ont une taille de 2-3 Mo chacun). Donc j'ai fini avec simpleXML. Tout semble bien, les fichiers chargés ok avec $data = simplexml_load_string($file) mais maintenant je dois remplacer les noms de noeuds avec des noms de balises html et construire un nouveau document avec $data->asXML(). Y a-t-il un moyen de le faire?SimpleXML: comment remplacer le nom du noeud?

Ce que j'ai maintenant:

<body> 
<section> 
    <title> 
    <p>sometext</p> 
    </title> 
    <epigraph> 
    <p>sometext</p> 
    </epigraph> 
    <stanza> 
    <v>sometext</v> 
    <v>sometext</v> 
    <v>sometext</v> 
    <v>sometext</v> 
    </stanza> 
    <stanza> 
    <v>sometext</v> 
    <v>sometext</v> 
    <v>sometext</v> 
    <v>sometext</v> 
    </stanza> 
    <section> 
    <title> 
    <p>sometext</p> 
    </title> 
    <epigraph> 
     <p>sometext</p> 
    </epigraph> 
    <stanza> 
     <v>sometext</v> 
     <v>sometext</v> 
     <v>sometext</v> 
     <v>sometext</v> 
    </stanza> 
    <stanza> 
     <v>sometext</v> 
     <v>sometext</v> 
     <v>sometext</v> 
     <v>sometext</v> 
    </stanza> 
    </section> 
</section> 
</body> 

Je voudrais avoir ceci:

<body> 
<div class="section"> 
    <h2> 
    <span>sometext</span> 
    </h2> 
    <div class="epigraph"> 
    <p>sometext</p> 
    </div> 
    <ul> 
    <li>sometext</li> 
    <li>sometext</li> 
    <li>sometext</li> 
    <li>sometext</li> 
    </ul> 
    <ul> 
    <li>sometext</li> 
    <li>sometext</li> 
    <li>sometext</li> 
    <li>sometext</li> 
    </ul> 
    <div class="section"> 
    <h2> 
    <span>sometext</span> 
    </h2> 
    <div class="epigraph"> 
     <p>sometext</p> 
    </div> 
    <ul> 
     <li>sometext</li> 
     <li>sometext</li> 
     <li>sometext</li> 
     <li>sometext</li> 
    </ul> 
    <ul> 
     <li>sometext</li> 
     <li>sometext</li> 
     <li>sometext</li> 
     <li>sometext</li> 
    </ul> 
    </div> 
</div> 
</body> 

merci à l'avance

Répondre

0

AFAIK, vous ne pouvez pas faire directement. Vous pouvez

  • Parse et boucle sur l'utilisation foreach et tel,
  • Ou, si le xml est garanti que simple et cohérente, vous pouvez simplement faire quelque chose comme
    strtr($xml, array('stanza>' => 'ul>', 'v>' => 'li>', ...));
+0

merci, va essayer de le faire avec php seulement –

Questions connexes