Преобразование XML-документа в E4X в AS3?

Я пытаюсь преобразовать XML-код AS2 в E4X . У меня есть следующий исходный XML-код (теперь XMLDocument) синтаксис ниже:

//temp var used to access createElement and creatTextNode 
var tempXML:XML = new XML(); 

//make an element:  <myNodeName> 
var myNode:XMLNode = tempXML.createElement("myNodeName"); 

//make a text node: "myValue" 
var myTextNode = tempXML.createTextNode("myValue"); 

//put the text node into the element: <myNodeName>myValue</myNodeName> 
myNode.appendChild( myTextNode ); 

//test it 
trace( myNode.toString() ); 

Что было бы эквивалентно, если бы я написал это на E4X?

Я специально хочу воспроизвести функции createElement() и createTextNode() в E4X.


person 1.21 gigawatts    schedule 31.07.2016    source источник


Ответы (2)


Пример:

    public function ASTest() 
    {
        var xmlDocument:String = testXMLDocument();
        var e4x:String = testE4X();
        trace("xmlDocument: "+xmlDocument);
        trace("e4x: "+e4x);

        trace("assert true: " + (xmlDocument == e4x));
    }

    public function testXMLDocument():String 
    {
        //temp var used to access createElement and creatTextNode 
        var tempXML:XMLDocument = new XMLDocument(); 

        //make an element:  <myNodeName> 
        var myNode:XMLNode = tempXML.createElement("myNodeName"); 

        //make a text node: "myValue" 
        var myTextNode:XMLNode = tempXML.createTextNode("myValue"); 

        //put the text node into the element: <myNodeName>myValue</myNodeName> 
        myNode.appendChild( myTextNode ); 

        //test it 
        return myNode.toString();       
    }

    public function testE4X():String 
    {
        //make an element:  <myNodeName> 
        var myNode:XML = <myNodeName />;


        /**
         * put the text node into the element: <myNodeName>myValue</myNodeName>
         * Two options to achieve that:
         *  1) using methods of XML class
         *  2) using e4k operators
         * Both ways give the same result
         */

        //1) XML function usage:
        //myNode.appendChild("myValue");

        //2) e4x syntax
        myNode.* += "myValue";

        //test it 
        return myNode.toXMLString();        
    }

Выход:

xmlDocument: <myNodeName>myValue</myNodeName>
e4x: <myNodeName>myValue</myNodeName>
assert true: true
person fsbmain    schedule 31.07.2016

var myNode = <myNodeName>myValue</myNodeName> - это все, что вам нужно, чтобы построить это буквально. Если у вас есть содержимое в виде строковой переменной, используйте var myNode = <myNodeName>{yourVariable}</myNodeName>.

person Martin Honnen    schedule 31.07.2016