如何将XML解析为PHP

时间:2019-10-12 13:46:51

标签: php xml

我有一个应用程序,允许上载我想解析为php的.xml文件,但是这样做时,我收到错误消息:

  

未捕获的异常:无法将字符串解析为XML in .......

我当前正在使用simplexml_load_file函数从应用程序中的文件夹访问.xml。

我知道,如果我在页面上使用print_r函数,这确实会返回文件的内容

我似乎不知道的一点是如何以及在何处添加xml标签

如果我将xml的内容硬编码到$ xmlstr变量中,并通过XMl标签支持一切,那么一切都会按我希望的那样工作。

当我尝试将XML存储到变量中时,会收到以下消息:

  

警告:SimpleXMLElement :: __ construct():实体:第3行:解析器错误   :起始标签应该是预期的,..............

中找不到      

警告:.......

中的SimpleXMLElement :: __ construct():      

警告:.......

中的SimpleXMLElement :: __ construct():^      

致命错误:未捕获的异常:无法将字符串解析为XML   .....

     

SimpleXMLElement-> __ construct('\ n \ n')#1 {main}被抛出.......

<?php
$xml=simplexml_load_file("output.xml");
$array = (array) $xml;
$xmlstr = $xml;
?>

我希望能够解析$ xmlstr的内容

xml文件的内容是:

<?xml version="1.0" encoding="UTF-8"?>
<robot rpa="false" generated="20190905 22:17:06.914" generator="Robot 
3.1.2 (Python 2.7.10 on darwin)">
<suite source="../testXML.robot" id="s1" name="testXML">
<test id="s1-t1" name="[TC001] TEST 001">
<kw name="Open Browser" library="SeleniumLibrary">
<doc></doc>
<arguments>
<arg></arg>
<arg></arg>
</arguments>
<msg timestamp="20190905 22:17:07.774" level="INFO"></msg>
<status status="PASS" endtime="20190905 22:17:10.930" 
starttime="20190905 22:17:07.774"></status>
</kw>
<kw name="Close Browser" library="SeleniumLibrary">
<doc></doc>
<status status="PASS" endtime="20190905 22:17:11.062" 
starttime="20190905 22:17:10.933"></status>
</kw>
<status status="PASS" endtime="20190905 22:17:11.062" critical="yes" 
starttime="20190905 22:17:07.773"></status>
</test>

<test id="s1-t2" name="[TC002] TEST 002">
<kw name="Open Browser" library="SeleniumLibrary">
<doc></doc>
<arguments>
<arg></arg>
<arg></arg>
</arguments>
<msg timestamp="20190905 22:17:11.064" level="INFO"></msg>
<kw name="Capture Page Screenshot" library="SeleniumLibrary">
<doc></doc>
<msg timestamp="20190905 22:17:11.088" level="INFO"></msg>
<status status="PASS" endtime="20190905 22:17:11.088" starttime="20190905 22:17:11.087"></status>
</kw>
<msg timestamp="20190905 22:17:11.142" level="FAIL">
</msg>
<status status="FAIL" endtime="20190905 22:17:11.142" starttime="20190905 22:17:11.063"></status>
</kw>
<status status="FAIL" endtime="20190905 22:17:11.142" critical="yes" starttime="20190905 22:17:11.063">
</status>
</test>
<status status="FAIL" endtime="20190905 22:17:11.143" starttime="20190905 22:17:06.915"></status>
</suite>
</robot>

如果我将文件的内容复制到此文件,它将起作用:

<?php
$xml=simplexml_load_file("output.xml");
$array = (array) $xml;
$xmlstr = <<<XML *file contents copied to here*

XML;
?>

0 个答案:

没有答案