Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.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
Php 在保留DOM的同时解析XML时,如何获得详细的错误信息?_Php_Xml_Domdocument - Fatal编程技术网

Php 在保留DOM的同时解析XML时,如何获得详细的错误信息?

Php 在保留DOM的同时解析XML时,如何获得详细的错误信息?,php,xml,domdocument,Php,Xml,Domdocument,我正在构建一个web表单,在这个表单中,网站管理员可以将XML添加到textarea并将其提交存储在数据库表中,但我有点困惑于解析XML的最佳方法 PHP脚本需要解析XML,如果有任何解析错误,它应该将错误消息和解析器停止的行/列返回给提交表单的管理员。解析后,它需要访问DOM,以便使用XPath对节点和属性的存在性进行多次检查 如果我使用xml\u-create\u-parser()和xml\u-parse(),如果返回false,我可以得到我所需要的详细错误信息。但是,在解析XML后,我无法

我正在构建一个web表单,在这个表单中,网站管理员可以将XML添加到textarea并将其提交存储在数据库表中,但我有点困惑于解析XML的最佳方法

PHP脚本需要解析XML,如果有任何解析错误,它应该将错误消息和解析器停止的行/列返回给提交表单的管理员。解析后,它需要访问DOM,以便使用XPath对节点和属性的存在性进行多次检查

如果我使用
xml\u-create\u-parser()
xml\u-parse()
,如果返回false,我可以得到我所需要的详细错误信息。但是,在解析XML后,我无法访问它的DOM。如果我使用
DOMDocument::loadXML()
,根据我所读的内容,它不会为解析错误抛出异常,它只是将它们输出到PHP日志

如果我首先尝试
xml\u parse()
,然后如果成功,运行
DOMDocument::loadXML()
,考虑到文件大多小于10KB,少数文件为10-20KB,那么性能会受到很大影响吗?有人知道更好的方法吗?

您可以启用,然后-如果DOMDocument::load()失败-使用查询详细的错误消息

loadxml($xml)){
$errors=libxml_get_errors();
var_dump($错误);

}
谢谢。每当我搜索时,我都会发现有人在设置自己的错误处理程序,而我没有找到一种方法可以通过这种方式获取错误的行号/列号。
<?php
$xml = '<a>
  <b>xyz</b>
  <c>
</a>';

libxml_use_internal_errors(true);
$doc = new DOMDocument;
if ( !$doc->loadxml($xml) ) {
  $errors = libxml_get_errors();
  var_dump($errors);
}