代码之家  ›  专栏  ›  技术社区  ›  Matt W

使用ActionScript 3分析标记属性的有效方法

  •  0
  • Matt W  · 技术社区  · 15 年前

    我很好奇,在ActionScript3中,如何解析HTML格式内容字符串的字体属性。让我们以下面的内容字符串为例:

    var content:String = '<font face="Archer-Bold" size="12" color="#000000">My Content</font>';
    

    我想解析这个字符串并创建一个包含字体属性的对象。因此,生成的对象将跟踪以下内容:

    trace( fontInfo.name ); // output: "Archer-Bold"
    trace( fontInfo.size ); // output: "12"
    trace( fontInfo.color ); // output: "#000000"
    

    我猜正则表达式是可行的,但我对它们一无所知。思想?

    2 回复  |  直到 15 年前
        1
  •  0
  •   radekg    15 年前

    这就是我想到的。它是正则表达式的理想工作:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
        creationComplete="onComplete();">
    
        <mx:Script>
            <![CDATA[
                import mx.controls.Alert;
                import mx.utils.ObjectUtil;
                private var targets:Array = new Array();
                private function onComplete():void {
    
                    var face:String = null;
                    var size:String = null;
                    var color:String = null;
    
                    var content:String = '<font face="Archer-Bold" size="12" color="#000000">My <br> Content</font>';
    
                    // since the content has invalid XML <br> tag XML construction will fail:
                    //var x:XML = new XML(content);
    
                    var faces:Array = content.match(/face\s*=\s*["'](.[^"']*)["']/);
                    // array is null if no matches found:
                    if ( faces != null ) {
                        face = faces[1];
                    }
    
                    var sizes:Array = content.match(/size\s*=\s*["'](\d{1,})["']/);
                    // array is null if no matches found:
                    if ( sizes != null ) {
                        size = sizes[1];
                    }
    
                    var colors:Array = content.match(/color\s*=\s*["'](.[^"']*)["']/);
                    // array is null if no matches found:
                    if ( colors != null ) {
                        color = colors[1];
                    }
    
                    Alert.show("Font : " + face + ", " + size + ", " + color + "." );
                }
            ]]>
        </mx:Script>
    
    </mx:WindowedApplication>
    

    希望有帮助。

        2
  •  0
  •   mweiss    15 年前

    使用XML对象怎么样?例如:

    var fontnode:XML = new XML(content);
    trace(fontnode.@face);
    trace(fontnode.@size);
    trace(fontnode.@color);
    
    推荐文章