代码之家  ›  专栏  ›  技术社区  ›  Nathan Smith

如何使用ActionScript 3安全地编码XML?

  •  2
  • Nathan Smith  · 技术社区  · 16 年前

    我从用户捕获数据并将其写入xml字符串,如下所示:

    {userEnteredText}

    在用户使用诸如“&<>”等特殊字符变得可爱之前,这是很好的。非法字符也是一个问题,例如0x19。

    是否有一种方法可以对我的xml进行sanatize并对特殊字符进行编码,或者我必须使用自己的方法?

    4 回复  |  直到 16 年前
        1
  •  3
  •   Taryn Frank Pearson    13 年前

    简单地将字符串转换为textnode就可以了

    var s:String = "test<ie>test";
    var x:XML = <xml/>;
    x.appendChild(s);
    trace(x.toXMLString());//outputs "<xml>test&lt;ie&gt;test</xml>"
    

    此外,您还可以将所有内容塞进 CTADA ...

    base64 ... >here's a lib<

        2
  •  3
  •   Peter V. Mørch    16 年前

    做

    var s:String = "test<ie>test";
    var x:XML = <xml>{s}</xml>;
    Alert.show(x.toXMLString());
    

    这将在警报中显示: <xml>test&lt;ie&gt;test</xml>

    Adobe's doc: Assembling and transforming XML objects

        3
  •  1
  •   Joel Hooks    16 年前

    这个 top level function escape 这是一种方法。

        4
  •  0
  •   Peter V. Mørch    16 年前

    var s:String = "test<ie>test";
    var x:XML = <xml/>;
    x.appendChild(s);
    trace(x.toXMLString());//outputs "<xml>test&lt;ie&gt;test</xml>"
    

    在我的计算机上,尝试此操作会生成异常:

    An ActionScript error has occurred:
    TypeError: Error #1085: The element type "ie" must be terminated by the matching end-tag "</ie>".
    

    所以我仍然在寻找同一个问题的答案。

    对不起,我还没有100分,所以我还不能直接评论这篇文章。