2010-11-11 63 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