Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:解析xml文件多行字符串_Php_Xml - Fatal编程技术网

php:解析xml文件多行字符串

php:解析xml文件多行字符串,php,xml,Php,Xml,我需要为每条道路形成一个表格,其中包含一个shape_leng和一个坐标(多行线)列。每条道路可以有任意数量的线,我需要将它们保存在一行中 Xml文件的格式如下:少数道路是多行字符串,少数道路只有一行: 我试着解析它 (请注意,对于道路,shape_leng是单个的,但对于道路,坐标线可以是单个的,也可以是多个。) 因此,我无法按特定顺序添加它们,如shape_leng和coordinates。如果要将所有坐标插入到单个数据库行中,我认为必须以不同的方式构造XPath和循环。在道路上循环,然后使

我需要为每条道路形成一个表格,其中包含一个shape_leng和一个坐标(多行线)列。每条道路可以有任意数量的线,我需要将它们保存在一行中

Xml文件的格式如下:少数道路是多行字符串,少数道路只有一行:

我试着解析它

(请注意,对于道路,shape_leng是单个的,但对于道路,坐标线可以是单个的,也可以是多个。)


因此,我无法按特定顺序添加它们,如shape_leng和coordinates。

如果要将所有坐标插入到单个数据库行中,我认为必须以不同的方式构造XPath和循环。在道路上循环,然后使用XPath获取属于该道路的所有坐标。例如:

// get all the roads and loop through them
$roads = $xml->xpath("//e:featureMember/b:AA_ROAD");
$i=0;

while(isset($roads[$i]))
{
    // get the coordinates for the current road
    $coordinates = $roads[i]->xpath("/b:the_geom/e:MultiLineString/e:lineStringMember/e:LineString/e:coordinates");
    $shapel = $roads[i]->xpath("/b:SHAPE_Leng");

    // add a second loop to concatinate all the $coordinates
    $j=0;
    while (isset($coordinates[$j])) {
        // TODO concatinate coordinates
    }

   // insert the row
   $b=mysql_query("INSERT IGNORE INTO `new`.`road1` (`coordstr`, `shapeleng`) values (GEOMFROMTEXT(concat('MULTILINESTRING ($a )')), '$shapel[$i]') ");


    $i++;
    echo "<br />";
    echo $i;    
}
//找到所有的路并绕行
$roads=$xml->xpath(“/e:featureMember/b:AA_ROAD”);
$i=0;
而(isset($roads[$i]))
{
//获取当前道路的坐标
$coordinates=$roads[i]>xpath(“/b:the_geom/e:MultiLineString/e:lineStringMember/e:LineString/e:coordinates”);
$shapel=$roads[i]>xpath(“/b:SHAPE_Leng”);
//添加第二个循环以包含所有$坐标
$j=0;
while(isset($coordinates[$j])){
//TODO连续坐标
}
//插入行
$b=mysql_查询(“将忽略插入到`new`.`road1`(`coordstr`,`shapeleng`)值(GEOMFROMTEXT(concat('MULTILINESTRING($a)')),`shapel[$i]');
$i++;
回声“
”; echo$i; }
我需要为每条道路建立一个表格,表格中有一个形状栏和一个坐标(多行线)栏,每条道路可以有任意数量的线条,我需要将它们保存在一行中。查询数据库以从中进行选择时,您可以添加顺序,而不是插入数据时。这有帮助吗?我在$shapel=$roads[$i]>xpath(“/b:SHAPE_Leng”)中遇到一个错误;警告:SimpleXMLElement::xpath()[]:第14行的C:\wamp\www\kgp\newroadp.php中未定义的命名空间前缀$shapel=$roads[$i]>xpath(“/b:SHAPE_Leng”);