Xml ActionScript中的“替代方案”;“数据成员”;在C中#

Xml ActionScript中的“替代方案”;“数据成员”;在C中#,xml,apache-flex,actionscript-3,xml-serialization,Xml,Apache Flex,Actionscript 3,Xml Serialization,目前我正在将一个应用程序从C#翻译成ActionScript(Silverlight到Flex),我需要序列化ActionScript中的一些XML内容 现在,不幸的是,我需要变量的名称与XML文件中的节点不同。我尝试了一种解决办法,即使用getter和setter。它对设置变量起到了作用,但我在获取时失败了,因为当您将变量设置为私有时,本机AS3“SimpleXMLEncoder”会忽略它 最好的解决方案是,如果我能给变量加上别名。这就是C#的工作方式。就这样, [DataMember(Nam

目前我正在将一个应用程序从C#翻译成ActionScript(Silverlight到Flex),我需要序列化ActionScript中的一些XML内容

现在,不幸的是,我需要变量的名称与XML文件中的节点不同。我尝试了一种解决办法,即使用getter和setter。它对设置变量起到了作用,但我在获取时失败了,因为当您将变量设置为私有时,本机AS3“SimpleXMLEncoder”会忽略它

最好的解决方案是,如果我能给变量加上别名。这就是C#的工作方式。就这样,

[DataMember(Name = "some")]
public someVariable Type { get; set; }
在ActionScript中有没有类似的方法?我只找到了这个,它是为班级准备的:

[RemoteClass(alias="user")]

我希望我能很好地描述我的第一个问题,我的英语也不错。谢谢。:)

不确定是否有办法处理类本身,但您能否向类中添加一个方法,输出一个新对象以用于XML序列化,并将其传递给SimpleXMLEncoder?在您返回的对象中,您可以将它们设置为您想要的名称,而不考虑类中的实际变量名称。

这很有趣,因为我刚刚完成了其中一个for work的编写,因为我看到了它的便利性。我们可能很快就会将其作为一个库发布,但在此之前,我可以为您指明使用自定义元数据的方向

我们所做的是定义我们自己的元数据(属性)标记,称为“DataMember”,然后创建一个序列化程序,将类型化类转换为动态对象,例如:

[DataMember(Name="some")]
public var someVariable:Type;


//in Type, no MetaTags means we use the given accessor

public var someName:String;

//becomes {some:{someName:""}}
然后,我们通过AdobeJSON编码器或使用FlexXML序列化程序运行这个动态对象


希望这有助于您了解我们是否以及何时发布我们的库。

谢谢。我希望我没弄错。在这里,为每个类创建一个方法并不是一个真正的选项。我想用一种更动态的方式来解决它。首先是因为我的上司告诉我的。其次,因为有很多对象很难创建和维护。下一个问题是,xml节点的名称包含“-”,这在变量名称中是不允许的。因此,我必须为每个类编写一个序列化程序。这可能是一种比我建议的更普遍的有用方法。我不知道您可以设置自定义元数据标记。但我想如果没有SpiceLib库,您无法设置它们,或者您可以吗?当然,事实上,我的实现中没有使用SpiceLib。注释框相当冗长,但本质上,当您在命令行上编译时,您需要附加行
keep-as3-metadata-DataMember
,然后您可以使用一些内置(但劣质的)反射工具在运行时获取类的XML描述
var classInfo:XML=descripbetype(new Sprite())
,在这个xml中,您可以找到包含元数据的xml节点并进行适当的解析。昨天,我了解了如何使用自定义元数据标记,我还将“保留元数据”行添加到命令行。这对我帮助很大!谢谢。:)我想“new Sprite()”应该代表我想要解析的对象。也许我也会想办法弄清楚,因为我没弄明白