Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除<;?xml版本=";1.0“;php中XML的标记_Php_Xml_Xml Parsing_Preg Replace - Fatal编程技术网

删除<;?xml版本=";1.0“;php中XML的标记

删除<;?xml版本=";1.0“;php中XML的标记,php,xml,xml-parsing,preg-replace,Php,Xml,Xml Parsing,Preg Replace,我有一个返回xml的函数,但返回一个包含两个 <?xml version="1.0"?> 标签 我无法通过一次呼叫来修复该呼叫。我试图使用SimpleXMLElement,所以当我将此xml加载到simplexml中时,由于标记重复,它会给出一个错误。有人知道如何在加载到xml之前删除标记吗 我已经试过了 $new_xml = preg_replace('/<?xml(.*)?>(.*)?<\/?>/', '', $xml); $new\u xm

我有一个返回xml的函数,但返回一个包含两个

   <?xml version="1.0"?>

标签

我无法通过一次呼叫来修复该呼叫。我试图使用SimpleXMLElement,所以当我将此xml加载到simplexml中时,由于标记重复,它会给出一个错误。有人知道如何在加载到xml之前删除标记吗

我已经试过了

$new_xml = preg_replace('/<?xml(.*)?>(.*)?<\/?>/', '', $xml);
$new\u xml=preg\u replace(“/(.*)/”,“,”$xml);
我也做了(顺便说一句,这很有效。只是不确定这是否是最好的方法,因为我不确定是否有时会有更多的信息
  $xml = str_replace('<?xml version="1.0"?>', '', $xml);
$xml=str_replace(“”,,$xml);

这将删除结束>前的第一行和尾随的新行字符

<?php
$xml = "<?xml version=\"1.0\"?>\n\t<tag></tag>";

     $xml = preg_replace('!^[^>]+>(\r\n|\n)!','',$xml);

echo $xml;
?>


它也适用于其他不符合1.0版的XML文件。

@AbsoluteƵERØ的回答帮助了我

在我的例子中,我是自己创建XML的

$doc=newDOMDocument();
$doc->formatOutput=true;
$root=$doc->createElement('TAG1');
$doc->appendChild($root);
//…某些循环插入更多具有属性的TAG1子级
$xml_file='relative/path/to/file.xml';
$doc->save($xml_file);//在这里,xml文件与引起问题的行一起保存
//读取创建的XML
$t\u xml=file\u get\u contents($xml\u file);
//删除第一行
$t_xml=preg_replace(“!^[^>]+>(\r\n |\n)!”,“$t_xml);
//保存到与原始文件相同的文件中
文件内容($xml\u文件,$t\u xml);

为什么不首先修复引入重复行的函数呢?我提到过,如果使用DOMDocument类创建XML文件,并且它生成无效的XML,那么它返回2,这一点我无法控制。可能是您硬编码了
澄清:在said中案例删除是必要的。虽然DOMDocument创建的XML本身是完全有效的XML(无需删除),但该XML随后将下载到客户端浏览器,客户端必须将XML上载到某个政府网站。As(至少我们的)政府似乎并不严格遵守规则——在本例中是标准——他们的上传表单只接受
.xml
,该表单以文档中定义的根元素开头。因此,要回答@IMSoP,确实出了问题,尽管不是我们的问题。