我知道小小的PHP,但我不是这里的专家...... - unfortunatley ...所以这个问题需要你的建议:我试图从一个数据提取一些数据.Osm文件。 -.-你可以在立交桥涡轮跑这里来演示命令我希望将数据存储在数据库 - (或者至少在一个excel文件)SimpleXMLElement :: xpath:从php osx提取数据xml文件
> /* This has been generated by the overpass-turbo wizard. The original
> search was: “hospital in rome”
> */ [out:json][timeout:25]; // fetch area “” to search in {{geocodeArea:rome}}->.searchArea; // gather results ( // query part
> for:rome “hospital” node["amenity"="hospital"](area.searchArea);
> way["amenity"="hospital"](area.searchArea);
> relation["amenity"="hospital"](area.searchArea);); // print results
> out body;
> >; out skel qt;
所以我有 - XML的量内 - 数据 - 这样的事情:
“标签”:{ “地址:城市”: “巴塞罗那”, “地址:housenumber”: “1”, “地址:邮编”: “08022” , “addr:street”:“Carrer de Torras i Pujalt”, “amenity”:“hospital”, “contact:email”:“[email protected]”, “联系方式:传真”: “+34 932124050”, “联系:电话”: “+34 932122300”, “联系人:网站”: “http://csf.com.es/”, “名”: “CLÍNICA圣家堂”}
所以,问题是这样的:如何存储所有这些值,我试图做一些没有成功的foreach。当然,我不知道为什么我们有一个迭代获得所有的价值,为什么不能一起存储。
那么我听说我们可以在这里使用SimpleXMLElement :: xpath来获取所有的值和相应的值。例如:
> $raw = <<<EOF <root> { "type": "node", "id": 583257940, "lat":
> 41.4134446, "lon": 2.1426945, "tags": {
> "amenity": "hospital",
> "emergency": "yes",
> "name": "Clinica Delfos" } }, { "type": "node", "id": 618312181, "lat": 41.4138593, "lon": 2.1970778, "tags": {
> "addr:city": "Barcelona",
> "addr:housenumber": "211",
> "addr:postcode": "08020",
> "addr:street": "Carrer de Fluvià",
> "amenity": "hospital",
> "health_facility:type": "health_centre",
> "medical_system:western": "yes",
> "name": "CAP Sant Martí",
> "phone": "+93 307 07 66" } }, { "type": "node", "id": 876348001, "lat": 41.3841883, "lon": 2.1952253, "tags": {
> "amenity": "hospital",
> "emergency": "yes",
> "name": "Hospital del Mar",
> "website": "http://www.parcdesalutmar.cat/hospitals/hospital-del-mar/index.html",
> "wheelchair": "yes" } },
>
> </root> EOF; $xml = simplexml_load_string($raw);
>
> foreach($xml->xpath("//way") AS $way){
> $via = $way->xpath("tag[@k='name']/@v")[0];
> foreach($way->nd AS $nd){
> $idnode = $nd["ref"];
> echo $idnode .", ". $via ."<br>";
> } }
问题:如何在这里使用的SimpleXMLElement :: XPath的?
XPath的方法,可以帮助这里:
我需要从上述选择中的所有数据:
> "tags": {
> "addr:city": "Barcelona",
> "addr:housenumber": "1",
> "addr:postcode": "08022",
> "addr:street": "Carrer de Torras i Pujalt",
> "amenity": "hospital",
> "contact:email": "[email protected]",
> "contact:fax": "+34 932124050",
> "contact:phone": "+34 932122300",
> "contact:website": "http://csf.com.es/",
> "name": "Cliníca Sagrada Família" }
这意味着,我必须选择上述所有的XML文档中提及任何地方的元素。
tag [@ k ='name']选择当前上下文节点的子节点,其中k个属性值的名称相同。然后,从那里,/ @ v返回v属性。
Finallyi必须getthe以下数据集:
> "tags": {
> "addr:city": "Barcelona",
"addr:housenumber": "1",
"addr:postcode": "08022",
"addr:street": "Carrer de Torras i Pujalt",
"amenity": "hospital",
"contact:email": "[email protected]",
"contact:fax": "+34 932124050",
"contact:phone": "+34 932122300",
"contact:website": "http://csf.com.es/",
"name": "Cliníca Sagrada Família" }
顺便说一句 - 你可以在立交桥涡轮跑这里来演示命令
那么你得到很多结果.... 问题:如何将结果存储在excel或mysql中?
我真的很喜欢听到你
提前