为什么动作脚本只将一段字符串分配给变量?

时间:2011-05-23 21:23:12

标签: flash actionscript

我有一个XML文档,我必须硬编码到AS中(是的,我有)。我试图将这个xml分配给一个字符串,但由于某种原因,xml doc声明被分配了?!

var xmlDoc:String = '<?xml version="1.0" encoding="UTF-8"?>';
    xmlDoc += '<?dctm xml_app=" ......

当我追踪xmlDoc字符串时,我总是只得到“&lt;?xml version =”1.0“encoding =”UTF-8“?&gt;”

我已经尝试将整个文档放在一个由s包围的字符串中,并将字符串连接起来。为什么字符串var只被分配到第一行?

尝试直接从文件

加载xml文档时得到相同的结果
var xmlDocument:XML = new XML();
    xmlDocument.load("myxml.xml");

    xmlDocument.onLoad(success:Boolean)
    {
    if(success)
    {
    trace(xmlDocument.toString());   //Just the first line is printed
    }

    }

由于

2 个答案:

答案 0 :(得分:2)

为什么不将它分配给XML变量..?

var xml:XML =
<shop>
    <item id="10">
        <price>20</price>
    </item>
</shop>;

看起来你正在尝试使用AS2。

您需要将xmlDocument.toString()替换为this,如下所示:

var xml:XML = new XML();

xml.onLoad = function(success:Boolean):Void
{
    if(success)
    {
        trace(this);
    }
}

xml.load("file.xml");

答案 1 :(得分:1)

我看到的一些事情,你发布的问题数量有限

首先你需要使用空格

//最后一个空格?

var xmlDoc:String = '<?xml version="1.0" encoding="UTF-8"?>';
//should be 
var xmlDoc:String = '<?xml version="1.0" encoding="UTF-8" ?>';

其次,我忘记了它的名字,但在你的第二行,你开始了?再次这应该是你的根节点定义

// this is bad
    xmlDoc += '<?dctm xml_app=" ......
// should be assuming dctm is your node name
    xmlDoc += '<dctm xml_app=" ......

总结一下,请注意间距,不要在节点名称中使用问号。

如果你使用cData

,也试着逃避或稍后你会遇到问题
var xmlDoc:String = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>";