代码之家  ›  专栏  ›  技术社区  ›  Andy E

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

  •  2
  • Andy E  · 技术社区  · 15 年前

    我正在构建一个Web表单,在这个表单中,我的站点上的管理员可以将XML添加到一个文本区域,并将其提交到一个数据库表中,但是对于解析XML的最佳方法,我有点困惑。

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

    如果我使用 xml_create_parser() xml_parse() ,如果返回了false,我可以获取我所追求的详细错误信息。但是,在解析XML之后,我无法访问它的DOM。如果我使用 DOMDocument::loadXML() 从我读到的内容来看,它不会抛出解析错误的异常,它只是将它们输出到PHP日志。

    如果我第一次尝试的话会是一个很棒的表演吗 XMLIB PARSER() 如果成功了,跑吧 domDocument::loadXML()。 ,考虑到文件大多小于10KB,少数为10-20KB?有人知道更好的方法吗?

    1 回复  |  直到 13 年前
        1
  •  6
  •   VolkerK    15 年前

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

    <?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);
    }