2010-11-11 67 views
1

我想輸出XML文件爲HTML。看起來simpleXML處理在我的文件上比XSL更快(每個文件都是2-3mb)。所以我以simpleXML結束。一切似乎都很好,文件加載與$data = simplexml_load_string($file)確定,但現在我需要用html標記名稱替換節點名稱,並用$data->asXML()構建一個新文檔。 有沒有辦法做到這一點?SimpleXML:如何替換節點名稱?

我現在擁有的一切:

<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> 

,我想有這樣的:

<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> 

在此先感謝

回答

0

AFAIK,你不能這樣做直接。您可以

  • 分析它,並遍歷使用foreach和這樣的,
  • 或者,如果XML是保證是簡單而一致的,你可以簡單地這樣做
    strtr($xml, array('stanza>' => 'ul>', 'v>' => 'li>', ...));
+0

謝謝,只會嘗試用php做到這一點 – 2010-11-11 15:20:33