2011-09-06 87 views
3

的具体点我想插入下面​​一行到我的XML文件:XML插入在XML文件

<?xml-stylesheet type="text/xsl" href="http://example.com/livesearch.xsl"?> 

后:

<?xml version="1.0" encoding="UTF-8" ?> 
在我的xml文件

目前我使用这个(可怕的)方法:

$G['xml'] = str_replace('<?xml version="1.0" encoding="UTF-8" ?>', '<?xml version="1.0" encoding="UTF-8" ?><?xml-stylesheet type="text/xsl" href="http://example.com/livesearch.xsl"?>', $G['xml']); 

什么是PHP中的DomDocument这样做的正确方法?

感谢

回答

5

要插入的行称为processing instruction。您可以使用DOM这样添加:

$dom = new DOMDocument(); 
$dom->loadXml('<?xml version="1.0" encoding="UTF-8" ?><root/>'); 

$dom->insertBefore(
    $dom->createProcessingInstruction(
     'xml-stylesheet', 
     'type="text/xsl" href="http://example.com/livesearch.xsl"' 
    ), 
    $dom->documentElement 
); 
echo $dom->saveXml(); 

输出:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="http://example.com/livesearch.xsl"?> 
<root/> 

在旁注,它可能会感觉不对劲使用str_replace,但如果它工作...它的工作原理。