日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

Php流式 大文件,如何使用PHP解析XML大文件

發布時間:2023/12/1 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Php流式 大文件,如何使用PHP解析XML大文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果使用 PHP 解析 XML 的話,那么常見的選擇有如下幾種:DOM、SimpleXML、XMLReader。如果要解析 XML 大文件的話,那么首先要排除的是 DOM,因為使用 DOM 的話,需要把整個文件全部加載才能解析,效率堪憂,相比較而言,SimpleXML 和 XMLReader 更好些,SimpleXML 相對簡單,而 XMLReader 相對復雜,但是它可以自定義解析整個過程,特別是流式解析的特點讓其效率更高。

下面我以一個 XML 大文件例子來對比一下 SimpleXML 和 XMLReader 的用法:

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

先看看用 SimpleXML 的話怎么搞:

$values = simplexml_load_file('file.xml');

foreach ($values as $value) {

var_dump($value);

}

?>

在看看用 XMLReader 的話怎么搞:

$xml = new XMLReader();

$xml->open('file.xml');

for ($name = null, $value = []; $xml->read(); null) {

if ($xml->nodeType == XMLReader::ELEMENT) {

$name = $xml->name;

if ($name == 'certificate') {

if ($value) {

var_dump($value);

}

$value = [];

continue;

}

}

if ($xml->nodeType == XMLReader::TEXT) {

if ($name) {

$value[$name] = $xml->value;

}

}

}

?>

在本例中,XML 文件有幾百萬行,XMLReader 的效率是 SimpleXML 的兩倍左右。

了解了相關知識,讓我們看看如何選擇合適的 XML 解析方法:如果規則比較復雜的話, 比如要查詢當前節點的上下文,那么 DOM 是合理的選擇;如果 XML 體積比較大的話,那么 XMLReader 是效率更高。不過如果沒有特殊需求的話,那么盡量選擇 SimpleXML,畢竟它用起來更簡單。

總結

以上是生活随笔為你收集整理的Php流式 大文件,如何使用PHP解析XML大文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。