我有大量的xml文件。这是我的全球定位系统巡演的文件。我需要从每个文件中选择一对数字。格式如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<name>T2022-02-02-13-52</name> <bounds minlat="55.63957603" minlon="12.45321142" maxlat="55.71344546" maxlon="12.50049124"/></metadata><trk>
<trkseg>
<trkpt lat="55.6401" lon="12.49971159">
<ele>13.5</ele><time>2022-02-02T08:39:56Z</time>
</trkpt>
<trkpt lat="55.64005171" lon="12.49973769">
<ele>1.6</ele><time>2022-02-02T08:40:07Z</time>
</trkpt>此文件中的-and 7000行。这是xml文件中的学位: lat an lon,我需要。在此文件中,数组中为55.6401和12.49971159。您能用php帮助编写代码吗?
发布于 2022-08-24 17:11:48
我编写了PHP脚本,从每个大文件中读取前400个字符,并抓取lat和lon。
对于测试,我使用了xampp窗口: index.php
<?php
$dir='.';
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if( ($file!='index.php')and($file!='.')and($file!='..') and (pathinfo($file)['extension']=='xml')){
//echo $file.'<br>';
$f=fopen($file,'r');
$read400= fread($f,400);// read partial file 'cause is huge
//echo $read400.'<hr>';
$lat_sta=strpos($read400,'trkpt lat="');//11 " " -2
$lat_stp=strpos($read400,'" lon="',$lat_sta+11);
//echo substr($read400,$lat_sta+11,$lat_stp-$lat_sta-11);echo '<br>';
$lat=substr($read400,$lat_sta+11,$lat_stp-$lat_sta-11);
$lon_sta=strpos($read400,'lon="',$lat_stp);
$lon_stp=strpos($read400,'"',$lon_sta+5);
//echo substr($read400,$lon_sta+5,$lon_stp-$lon_sta-5);echo '<br>';
$lon=substr($read400,$lon_sta+5,$lon_stp-$lon_sta-5);
$data[]=[$lat,$lon];
fclose($f);
}
}
closedir($dh);
}
}
isset($data)&& var_dump($data);
?>和file1.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<name>T2022-02-02-13-52</name> <bounds minlat="55.63957603" minlon="12.45321142" maxlat="55.71344546" maxlon="12.50049124"/></metadata><trk>
<trkseg>
<trkpt lat="55.6401" lon="12.49971159">
<ele>13.5</ele><time>2022-02-02T08:39:56Z</time>
</trkpt>
<trkpt lat="55.64005171" lon="12.49973769">
<ele>1.6</ele><time>2022-02-02T08:40:07Z</time>
</trkpt>和file2.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<name>T2022-02-02-13-52</name> <bounds minlat="55.63957603" minlon="12.45321142" maxlat="55.71344546" maxlon="12.50049124"/></metadata><trk>
<trkseg>
<trkpt lat="55.601" lon="12.4959">
<ele>13.5</ele><time>2022-02-02T08:39:56Z</time>
</trkpt>
<trkpt lat="55.64005171" lon="12.49973769">
<ele>1.6</ele><time>2022-02-02T08:40:07Z</time>
</trkpt>结果是:
array(2) { [0]=> array(2) { [0]=> string(7) "55.6401" [1]=> string(11) "12.49971159" } [1]=> array(2) { [0]=> string(6) "55.601" [1]=> string(7) "12.4959" } } https://stackoverflow.com/questions/73476054
复制相似问题