我有一个由第三方网站为我生成的XML文件,如下所示:
<?xml version="1.0"?>
<results>
<row></row>
<row></row>
<row></row>
</results>
我添加ProcessingInstruction
:
$dom = new DOMDocument();
$dom->load($url); // $url point to the third party website's generated XML with structure like from above example
$xslt = $dom->createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="style.xsl"');
$dom->appendChild($xslt); //adds it to the very end, but needs to go on the second line
最后得到这个:
<?xml version="1.0"?>
<results>
<row></row>
<row></row>
<row></row>
</results>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
但我需要它是这样的:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<results>
<row></row>
<row></row>
<row></row>
</results>
怎么做?
答案 0 :(得分:1)
您必须在根元素(结果标记)之前插入处理指令。 DOMNode :: insertBefore有点奇怪,因为您必须在父元素上调用它,并提供您要插入的元素作为第一个参数,并将要插入的元素作为第二个参数提供。 $dom->documentElement
引用文档根目录(=结果标记)。
$dom = new DOMDocument();
$dom->load($url);
$xslt = $dom->createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="style.xsl"');
$dom->insertBefore($xslt, $dom->documentElement);
echo $dom->saveXML();