mam taki problem, probuje odczytac dane z pliku XML (dokladnie to CityGML) i mniej wiecej takiej strukturze:
<CityModel> <gml:boundedBy> <gml:Envelope srsName="EPSG:25834" srsDimension="3"> <gml:lowerCorner>115253.5092 6255736.3205 0</gml:lowerCorner> <gml:upperCorner>115293.3308 6255775.2659 12.7664999999979</gml:upperCorner> </gml:Envelope> </gml:boundedBy> <cityObjectMember> <gen:GenericCityObject gml:id="Building_1"> <gen:intAttribute name="Object_ID"> <gen:value>1</gen:value> </gen:intAttribute> <gen:stringAttribute name="citygml_feature_role"> <gen:value>cityObjectMember</gen:value> </gen:stringAttribute> <gen:lod4Geometry> <gml:MultiSurface srsName="EPSG:25834" srsDimension="3"> <gml:surfaceMember> <gml:Polygon gml:id="fme-gen-d553528a-9b5d-4338-ab36-f1189a823ff9"> <gml:exterior> <gml:LinearRing> <gml:posList> 37.8846531668 49.310087411 0 37.8815274028 49.3099858492 4.05 37.8816104346 49.3099791575 4.05 37.8846531668 49.310087411 0 37.8815274028 49.3099858492 4.05 37.8816104346 49.3099791575 4.05 37.8846531668 49.310087411 0 37.8815274028 49.3099858492 4.05 37.8816104346 49.3099791575 4.05 37.8846531668 49.310087411 0 37.8815274028 49.3099858492 4.05 37.8816104346 49.3099791575 4.05 37.8846531668 49.310087411 0 37.8815274028 49.3099858492 4.05 37.8816104346 49.3099791575 4.05 37.8846531668 49.310087411 0 37.8815274028 49.3099858492 4.05 37.8816104346 49.3099791575 4.05 37.8846531668 49.310087411 0 37.8815274028 49.3099858492 4.05 </gml:posList>
i teraz chce odczytac caly plik XML i wszystkie wspolrzedne z gml:posList zapisac do tablicy, wiec zrobilem tak:
$XML = new XMLReader(); $XML->open('xyz.xml'); $count=0; while($XML->read()) { if($XML->nodeType == XMLReader::ELEMENT) { $name = $XML->name; if ($XML->name == 'gml:posList') //wg czego ma byc wyszukiwane { } } if($XML->nodeType == XMLReader::TEXT || $XML->nodeType == XMLReader::CDATA) { $crdSet[$count] = $XML->value; } if($XML->nodeType == XMLReader::END_ELEMENT) { if ($XML->name == 'gml:posList') { $count++; } }
i wszystko dziala jak trzeba, ale problem jest taki ze jako ostatni element tablicy zapisywane jest
[1123] => #fme-gen-379ac36c-b559-435f-95a5-60f255d1bdd5
ktory nie ma zupelnie nic wspolnego z gml:posList a znajduje sie na koncu pliku w
<app:surfaceDataMember> <app:X3DMaterial gml:id="fme-gen-a71733d0-2a38-4273-a589-7d68bc96eaae"> <app:diffuseColor>0.8 0.713725490196078 0.63921568627451</app:diffuseColor> <app:target>#fme-gen-953b831a-00b1-4296-8e9c-7143c032744a</app:target> <app:target>#fme-gen-c7a6e972-3fe4-4c0f-99a4-837ae1e6a705</app:target> <app:target>#fme-gen-ca39257f-9e58-4764-ba26-056ee3c0c77a</app:target> <app:target>#fme-gen-439bd972-d0c5-41ea-b57c-bb1327d9cf05</app:target> <app:target>#fme-gen-379ac36c-b559-435f-95a5-60f255d1bdd5</app:target>
czy ktos moze mi podpowiedziec co robie zle ze zapisuje mi sie wartosc zupelnie z innego wezla? dzieki!