首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从xml-file中获取值

从xml-file中获取值
EN

Stack Overflow用户
提问于 2022-08-24 15:41:07
回答 1查看 40关注 0票数 0

我有大量的xml文件。这是我的全球定位系统巡演的文件。我需要从每个文件中选择一对数字。格式如下:

代码语言:javascript
复制
<?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帮助编写代码吗?

EN

回答 1

Stack Overflow用户

发布于 2022-08-24 17:11:48

我编写了PHP脚本,从每个大文件中读取前400个字符,并抓取lat和lon。

对于测试,我使用了xampp窗口: index.php

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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>

结果是:

代码语言:javascript
复制
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" } } 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73476054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档