Как я могу управлять элементом XML использовать ActionScript - PullRequest
0 голосов
/ 07 февраля 2012
<fpdl:StartNode Id="Goods_Deliver_Process.START_NODE" Name="START_NODE" DisplayName="">
    <fpdl:ExtendedAttributes>
        <fpdl:ExtendedAttribute Name="FIRE_FLOW.bounds.height" Value="20"/>
        <fpdl:ExtendedAttribute Name="FIRE_FLOW.bounds.width" Value="20"/>
        <fpdl:ExtendedAttribute Name="FIRE_FLOW.bounds.x" Value="11"/>
        <fpdl:ExtendedAttribute Name="FIRE_FLOW.bounds.y" Value="117"/>
    </fpdl:ExtendedAttributes>
</fpdl:StartNode>

fpdl - это пространство имен xml, как я могу управлять элементом xml с помощью actionscript. Я пытаюсь использовать пример. ["Fpdl: ExtendedAttribute"], чтобы посетить элемент, но это не такработа.

Спасибо.

Ответы [ 3 ]

0 голосов
/ 07 февраля 2012

Вы можете использовать экземпляр Namespace и оператор разрешения области действия ::. Вот пример:

package 
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class Main extends Sprite 
    {

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }// end function

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            var xml:XML = 
            <root xmlns:ns="http://www.namespace.com/ns" >
                <ns:parent value="parent">
                    <ns:child>child</ns:child>
                </ns:parent>
            </root>;

            var ns:Namespace = new Namespace("http://www.namespace.com/ns");
            trace(xml.ns::parent.@value); // output: parent
            trace(xml.ns::parent.ns::child); // output: child

        }// end function

    }// end class

}// end package
0 голосов
/ 07 февраля 2012

Вот более полное руководство по пространствам имен XML AS3.

var data:XML = <fpdl:StartNode Id="Goods_Deliver_Process.START_NODE" Name="START_NODE" DisplayName="" xmlns:fpdl="http://google.com">
    <fpdl:ExtendedAttributes>
        <fpdl:ExtendedAttribute Name="FIRE_FLOW.bounds.height" Value="20"/>
        <fpdl:ExtendedAttribute Name="FIRE_FLOW.bounds.width" Value="20"/>
        <fpdl:ExtendedAttribute Name="FIRE_FLOW.bounds.x" Value="11"/>
        <fpdl:ExtendedAttribute Name="FIRE_FLOW.bounds.y" Value="117"/>
    </fpdl:ExtendedAttributes>
</fpdl:StartNode>;

// define namespace if you know its URL
var ns:Namespace = new Namespace("http://google.com");      
trace(data.ns::ExtendedAttributes.length());

// get namespace from document
ns = data.namespace("fpdl");                                
trace(data.ns::ExtendedAttributes.length());

// get default namespace from document
ns = data.namespace();                                      
trace(data.ns::ExtendedAttributes.length());

// set default namespace to use
default xml namespace = ns;
trace(data.ExtendedAttributes.ExtendedAttribute.length()); // see, no ns:: stuff

Лично я нахожу пространство имен xml по умолчанию = ns; чертовски уродливо.

0 голосов
/ 07 февраля 2012

Доступ к XML с помощью E4X в Actionscript и использование пространств имен поначалу немного сложнее. Вот быстрое решение, которое должно помочь вам.

http://www.cafesilencio.net/blog/accessing-xml-with-namespaces-in-as3-flex-air

...