Flash / Flex / ActionScript/XML/Equality

Материал из Web эксперт
Перейти к: навигация, поиск

A comparison between an XML instance and an XMLList with only one XML instance is treated as a direct comparison between the two XML instances

 

package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var msg1:XML = <GREETING>
            <TO>A</TO>
            <FROM>Programmer</FROM>
            <MESSAGE>Hello</MESSAGE>
          </GREETING>;
        
        var msg2:XML = <GREETING>
            <TO>A</TO>
            <FROM>Programmer</FROM>
            <MESSAGE>Hello</MESSAGE>
          </GREETING>;
        
        
        trace(msg1.FROM == msg2.*[1]);  // 

    }
  }
}



An element is equal to an XML attribute if the element contains no child and the text contained by the element matches the attribute value.

 

package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var product:XML = <PRODUCT QUANTITY="1"><COST>1</COST></PRODUCT>;
        trace(product.@QUANTITY == product.COST);  // Displays: true

    }
  }
}



An element is equal to an XML instance representing a text node if the element contains no child elements, and the text it contains matches the text node"s value.

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var product:XML = <PRODUCT>
                            <COST>1</COST>
                            <QUANTITY>1</QUANTITY>
                          </PRODUCT>;
        trace(product.COST.*[0] == product.QUANTITY);  // Displays: true
    }
  }
}



By default, E4X ignores whitespace nodes when comparing XML for Equality

 

package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var x1:XML = <a><b></b></a>;
        var x2:XML = <a>
                       <b></b>
                     </a>;
        trace(x1 == x2);  // Still displays: true

    }
  }
}



Compare two xml variable

 
package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var msg1:XML = <GREETING>
            <TO>A</TO>
            <FROM>Programmer</FROM>
            <MESSAGE>Hello</MESSAGE>
          </GREETING>;
        
        var msg2:XML = <GREETING>
            <TO>A</TO>
            <FROM>Programmer</FROM>
            <MESSAGE>Hello</MESSAGE>
          </GREETING>;
        
        trace(msg1.* == msg2.*);  // Displays: true

    }
  }
}



To not to ignore whitespace nodes prior to parsing

 

package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){

        XML.ignoreWhitespace = false;  // Don"t ignore whitespace nodes
        var x1:XML = <a><b></b></a>;
        var x2:XML = <a>
                       <b></b>
                     </a>;
        trace(x1 == x2);  // Now displays: false
        
    }
  }
}



XML Equality

 

package{
  import flash.display.Sprite;
  
  public class Main extends Sprite{
    public function Main(){
        var x1:XML = <a><b></b></a>;
        var x2:XML = <a><b></b></a>;
        trace(x1 == x2);  // Displays: true

    }
  }
}