Php 解析laravel中的XML文件

Php 解析laravel中的XML文件,php,xml,parsing,laravel-5.2,Php,Xml,Parsing,Laravel 5.2,我想从我的计算机中选择一个要解析的XML文件。表单可以工作,我可以使用Input::file('file');功能。不过,我想通过支持将此文档作为临时文件上载来解析它。当我想要解析它时,我会遇到类似“无法从字符串解析”这样的错误。解析器似乎找不到该文件。我尝试了两种解析器:SimpleXML和XMLParser(来自orchestral) 我还尝试在存储文件后解析它 private function store($data){ $destinationPath = public_path

我想从我的计算机中选择一个要解析的XML文件。表单可以工作,我可以使用Input::file('file');功能。不过,我想通过支持将此文档作为临时文件上载来解析它。当我想要解析它时,我会遇到类似“无法从字符串解析”这样的错误。解析器似乎找不到该文件。我尝试了两种解析器:SimpleXML和XMLParser(来自orchestral)

我还尝试在存储文件后解析它

private function store($data){
    $destinationPath = public_path('uploads\\');
    $fileName = $data->getClientOriginalName();
    $data->move($destinationPath,$fileName);
    $xml = simplexml_load_file($destinationPath.$fileName);
    }
提前感谢您的帮助。

当您说“解析”时,您的意思是什么?查找节点?删除节点?添加节点?还是只读取节点

因为您可以查找和阅读该类,但如果您想添加或删除,我建议您使用DomDocument

使用SimpleXMLElement,构造将是:

$xml = new SimpleXMLElement($destinationPath.$fileName, null, true);
$xml = new DomDocument('1.0', 'utf-8'); // Or the right version and encoding of your xml file
$xml->load($destinationPath.$fileName);
而文件将是:

$xml = new SimpleXMLElement($destinationPath.$fileName, null, true);
$xml = new DomDocument('1.0', 'utf-8'); // Or the right version and encoding of your xml file
$xml->load($destinationPath.$fileName);
创建对象后,您可以处理所有文档。

当您说“解析”时,您的意思是什么?查找节点?删除节点?添加节点?还是只读取节点

因为您可以查找和阅读该类,但如果您想添加或删除,我建议您使用DomDocument

使用SimpleXMLElement,构造将是:

$xml = new SimpleXMLElement($destinationPath.$fileName, null, true);
$xml = new DomDocument('1.0', 'utf-8'); // Or the right version and encoding of your xml file
$xml->load($destinationPath.$fileName);
而文件将是:

$xml = new SimpleXMLElement($destinationPath.$fileName, null, true);
$xml = new DomDocument('1.0', 'utf-8'); // Or the right version and encoding of your xml file
$xml->load($destinationPath.$fileName);

创建对象后,您可以处理所有文档。

未知您是要验证计算机上的某些现有xml文件,还是要实现用户上载任何xml文件并编写一些逻辑来处理此任务的功能。然而,这不是重点

我建议您使用内置的PHP核心simplexml_load_file()函数,该函数帮助我完成了项目。因为通过请求$file注入等,您永远不会让Laravel将xml解析为可理解的数组或对象。这对于html表单或json很好,而不是xml或其他格式

这就是为什么您应该使用对象,它将是(例如)此类代码的结果:

$xml_object = simplexml_load_file($request->file('action')->getRealPath());

然后,您需要自己验证每个xml节点和字段,编写一些逻辑,因为您无法使用内置的to-Laravel-Illustration\Http\Request-validate()方法,您是想验证计算机上现有的一些xml文件,还是想实现用户上传任何xml文件并编写一些逻辑来处理此任务的功能。然而,这不是重点

我建议您使用内置的PHP核心simplexml_load_file()函数,该函数帮助我完成了项目。因为通过请求$file注入等,您永远不会让Laravel将xml解析为可理解的数组或对象。这对于html表单或json很好,而不是xml或其他格式

这就是为什么您应该使用对象,它将是(例如)此类代码的结果:

$xml_object = simplexml_load_file($request->file('action')->getRealPath());

然后,您需要自己验证每个xml节点和字段,编写一些逻辑,因为您无法使用内置的to-Laravel-Lightning\Http\Request-validate()方法。

xml文件包含一个大的(base64)字符串,必须从文件中检索该字符串。下一步是解码此字符串,这将为我提供另一个xml字符串file:///C:/path/to/file.xml:29: 解析器错误:文档末尾有额外的内容,这意味着您的XML格式不好。为什么不展示一下如何创建xml文件的示例呢?xml文件包含一个大的(base64)字符串,必须从该文件中检索该字符串。下一步是解码此字符串,这将为我提供另一个xml字符串file:///C:/path/to/file.xml:29: 解析器错误:文档末尾有额外的内容,这意味着您的XML格式不好。为什么不演示如何创建xml文件的示例?