Я получаю этот результат от overpass api
- это улицы.Горячий, чтобы получить узел по id в DomDocument?
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2013-12-03T12:52:02Z"/>
<node id="1549294055" lat="49.4310141" lon="7.5117213"/>
<node id="1549294085" lat="49.4313484" lon="7.5126816"/>
<node id="1549294087" lat="49.4315384" lon="7.5132431"/>
<node id="1549294093" lat="49.4318250" lon="7.5140125"/>
<node id="1549294094" lat="49.4318541" lon="7.5140969"/>
<node id="1549294104" lat="49.4322262" lon="7.5151568"/>
<node id="1549294106" lat="49.4324901" lon="7.5159332"/>
<node id="1552775307" lat="49.4328287" lon="7.5169585"/>
<node id="1552775309" lat="49.4328551" lon="7.5170364"/>
<node id="1552775318" lat="49.4330332" lon="7.5176039"/>
<node id="1552775347" lat="49.4333308" lon="7.5186515"/>
<node id="1552775375" lat="49.4341515" lon="7.5215118"/>
<node id="1552775408" lat="49.4345873" lon="7.5229784"/>
<node id="1552775447" lat="49.4358841" lon="7.5273364"/>
<node id="1552775464" lat="49.4367267" lon="7.5302234"/>
<node id="1552809430" lat="49.4368016" lon="7.5304614"/>
<way id="28367045">
<nd ref="1549294106"/>
<nd ref="1552775307"/>
<nd ref="1552775309"/>
<nd ref="1552775318"/>
<nd ref="1552775347"/>
<nd ref="1552775375"/>
<nd ref="1552775408"/>
<nd ref="1552775447"/>
<nd ref="1552775464"/>
<nd ref="1552809430"/>
<tag k="highway" v="secondary"/>
<tag k="ref" v="L 356"/>
</way>
<way id="141545567">
<nd ref="1549294104"/>
<nd ref="1549294106"/>
<tag k="bridge" v="yes"/>
<tag k="highway" v="secondary"/>
<tag k="layer" v="1"/>
<tag k="ref" v="L 356"/>
</way>
<way id="141545568">
<nd ref="1549294055"/>
<nd ref="1549294085"/>
<nd ref="1549294087"/>
<nd ref="1549294093"/>
<nd ref="1549294094"/>
<nd ref="1549294104"/>
<tag k="highway" v="secondary"/>
<tag k="ref" v="L 356"/>
</way>
</osm>
Поэтому мне нужно, чтобы разобрать его и вернуть каждую улицу, но когда я пытаюсь разобрать его http://www.php.net/manual/en/book.dom.php я не могу получить что-либо по идентификатору. Мой код ниже:
$doc = new DOMDocument;
$doc->loadXML($result);
$ways = $doc->getElementsByTagName('way');
foreach ($ways as $way) {
$nodes = $way->getElementsByTagName('nd');
foreach ($nodes as $node) {
$id = intval($node->getAttribute('ref'));
var_dump($id);
var_dump($doc->getElementById($id));
}
}
[_ "Чтобы эта функция работала, вам понадобится ..." _] (http://www.php.net/manual/en/domdocument.getelementbyid.php) – CBroe
Каков ожидаемый результат? Вместо 'getElementById', я бы просто использовал выражение XPath. Что-то вроде: '$ xpath = new DOMXPath ($ doc); $ elem = $ xpath-> query ("// * [@ id = '$ id']") -> item (0); ' –
@CBroe, спасибо, теперь я вижу проблему ... Может быть, вы есть некоторые идеи, как добавить 'DTD' в существующий объект DOMDocument? I i googleld, единственная вещь о 'openstreetmap' - это http://wiki.openstreetmap.org/wiki/API_v0.6/DTD – Kin