czesc,
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
{
$crdSet[$count] = array();
}
}
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!