【问题标题】:PHP simpleXML Element parse complex XMLPHP simpleXMLElement 解析器复杂的 XML
【发布时间】:2014-07-01 11:06:29
【问题描述】:

我正在尝试解析一个更大的 xml 文件,它有很多命名空间并且相当复杂。

这是我要解析的根目录中的条目示例: http://pastebin.com/zJGQZBMV

这是我的 PHP 脚本:

private function importFromFile()
{
    $result = false;
    $xmlFile = simplexml_load_file($this->getSavedFile());
    foreach($xmlFile->children() as $entry){
        $entry->registerXPathNamespace("vuln", "http://scap.nist.gov/schema/vulnerability/0.4");
        var_dump($entry->{"vuln:cve-id"}) ;
        break;
    }
    return $result;
}

但是,它不显示 CVE Id。可能是因为 Namespace 吗?我收到:

object(SimpleXMLElement)#6 (0) { }

我关注了:Parse XML with Namespace using SimpleXML

亲切的问候, 理查德

【问题讨论】:

    标签: php xml simplexml


    【解决方案1】:

    如果为脚本分配了足够的内存,则可以使用 SimpleXML 解析大型 xml 文件。

    假设 $this->getSavedFile() 表示带有根和命名空间声明的完整 xml 请求。

    $xmlFile = new SimpleXMLElement($this->getSavedFile());
    
    echo $xmlFile->entry['id'];    
    

    输出应该是。

    CVE-2014-0001
    

    参考: http://www.php.net/manual/en/simplexmlelement.construct.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多