![]() |
|
||||||||||
|
|
|
|||||
|
от виндового проекта достались настроки и параметры игры в хмлках такого вида:
<?xml version="1.0" encoding="unicode" ?>
<root>
<object name="Params">
<object name="SITE">
<integer name="x" value="96"/>
<integer name="y" value="15"/>
<integer name="width" value="53"/>
<integer name="height" value="35"/>
<!-- ВЛАДЕЛЕЦ-->
<integer name="master" value="0"/>
<string name = "Terrain" value = "XML\Terrain888.xml"/>
<object name="INFRASTRUCTURE">
<boolean name="footway" value="true"/>
<boolean name="highway" value="true"/>
</object>
</object> <!-- SITE -->
</object> <!-- Params -->
</root>
PS переписать все настройки под более удобный флешу формат возможности не представляется к сожалению (((
__________________
fast restart: *((int*)0) = 0; |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 15
|
var mXML:XML = <root> <object name="Params"> <object name="SITE"> <integer name="x" value="96"/> <integer name="y" value="15"/> <integer name="width" value="53"/> <integer name="height" value="35"/> <integer name="master" value="0"/> <string name = "Terrain" value = "XML\Terrain888.xml"/> <object name="INFRASTRUCTURE"> <boolean name="footway" value="true"/> <boolean name="highway" value="true"/> </object> </object> </object> </root> // var w:int = xml.child("root").child("Params").child("SITE").width var w:int = mXML.object.(@name == "Params").object.(@name == "SITE").integer.(@name == "width").@value; trace(w); |
|
|||||
|
ветеран форума
|
var xml:XML = <root> <object name="Params"> <object name="SITE"> <integer name="x" value="96"/> <integer name="y" value="15"/> <integer name="width" value="53"/> <integer name="height" value="35"/> <integer name="master" value="0"/> <string name = "Terrain" value = "XML\Terrain888.xml"/> <object name="INFRASTRUCTURE"> <boolean name="footway" value="true"/> <boolean name="highway" value="true"/> </object> </object> </object> </root> function getValueByName(attrName:String, dataXML:XML):String { var nodeValue:String = dataXML..*.(@name == attrName).@value.toString(); return nodeValue || "... а нету такого value у требуемого узла :)"; } trace( "Params = " + getValueByName("Params", xml) ); trace( "footway = " + getValueByName("footway", xml) );
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 15.09.2009 в 04:32. |
|
|||||
|
Modus ponens
|
Как бы тяжело найти более удобный формат для флеша чем XML
быстрее читать AMF, но его писать сложно вне Флеша... а так, флеш очень шусто XML парсит / читает, ну, по крайней мере быстрее чем Яваскрипт, даже в V8.
__________________
Hell is the possibility of sanity |
|
|||||
|
а если будет так:
<?xml version="1.0" encoding="unicode" ?>
<root>
<object name="Params">
<object name="SITE">
<integer name="x" value="96"/>
<integer name="y" value="15"/>
<integer name="width" value="53"/>
<integer name="height" value="35"/>
</object> <!-- SITE -->
<object name="SITE">
<integer name="x" value="2"/>
<integer name="y" value="2"/>
<integer name="width" value="53"/>
<integer name="height" value="35"/>
</object> <!-- SITE -->
<object name="SITE">
<integer name="x" value="2"/>
<integer name="y" value="37"/>
<integer name="width" value="53"/>
<integer name="height" value="35"/>
</object> <!-- SITE -->
</object> <!-- Params -->
</root>
function getValueByName(attrName:String, dataXML:XML):String
{
var nodeValue:String = dataXML..*.(@name == attrName).@value.toString();
return nodeValue || "... а нету такого value у требуемого узла :)";
}
trace( "Params = " + getValueByName("Params", xml) );
trace( "footway = " + getValueByName("footway", xml) );
__________________
fast restart: *((int*)0) = 0; Последний раз редактировалось progman; 15.09.2009 в 12:37. |
|
|||||
|
а с чем у вас конкретно проблема. вам дали решение, объяснили.
или вы хотите, чтобы и код за вас весь написали?
__________________
я могу стать всем, если только захочу |
|
|||||
|
trace( "footway = " + getValueByName("footway", xml) ); - из какой ноды SITE будет брать параметр ибо их там несколько.
__________________
fast restart: *((int*)0) = 0; |
|
|||||
|
ветеран форума
|
Цитата:
1. Если узлы совсем уж такие будут идентичные и будут одинаковые атрибуты namе, то нужно дополнительно указывать еще и номер узла из которого выбирать value по name. function getValueByName(attrName:String, num:int, dataXML:XML):String { var nodeValue:String = dataXML.object.object[num].*.(@name == attrName).@value.toString(); return nodeValue || "... а нету такого value у требуемого узла :)"; } 3. Либо в процессе обхода дерева сразу присваивать значения нужным элементам.
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 15.09.2009 в 13:32. |
|
|||||
|
Mur4ik спасибо.
__________________
fast restart: *((int*)0) = 0; |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:23. |
|
|
« Предыдущая тема | Следующая тема » |
|
|