添加xml-stylesheet标签simpleXML php

时间:2018-10-08 15:03:57

标签: php xml simplexml

嗨,这是我的简单代码:

$xml = new SimpleXMLElement('<p:FatturazioneElettronica xmlns:p="http://microsoft.com/wsdl/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://dummy.com"/>');

$xml->addAttribute("versione","FPR12");

$FatturaElettronicaHeader = $xml->addChild('FatturaElettronicaHeader',null,'http://dummy.com');

xml结果是:

<p:FatturazioneElettronica xmlns:p="http://microsoft.com/wsdl/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://dummy.com" versione="FPR12">

 <FatturaElettronicaHeader>
  <DatiTrasmissione>
   ....

如何在xml“ xml-stylesheet”的顶部添加?

<?xml-stylesheet type="text/xsl" href="fatturapa_v1.2.xsl" ?> 

1 个答案:

答案 0 :(得分:3)

除了简单的事情以外,SimpleXML并不擅长做其他事情(认为这很贴切)。我能想到的唯一方法是使用DOMDocument,它提供了更丰富的API,您应该可以按照以下步骤进行操作...

$xmlD = new DOMDocument( "1.0", "ISO-8859-15" );
$xmlD->appendChild($xmlD->createProcessingInstruction('xml-stylesheet', 'type="text/xsl" href="fatturapa_v1.2.xsl"'));
$xmlD->appendChild($xmlD->importNode(dom_import_simplexml($xml)));

echo $xmlD->saveXML();

这将创建一个新的DOMDocument实例,然后添加一些内容。首先,它使用createProcessingInstruction()添加样式表的处理指令。然后,它导入您的SimpleXML文档的现有内容(在$xml中),并将其附加到末尾。 echo应该给您一个类似...的文件。

<?xml version="1.0" encoding="ISO-8859-15"?>
<?xml-stylesheet type="text/xsl" href="fatturapa_v1.2.xsl"?>
<p:FatturazioneElettronica xmlns:p="http://microsoft.com/wsdl/types/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://dummy.com" versione="FPR12"/>