我正在考虑实现一个解析器框架,该框架将利用一组接口使其易于适应不同类型的数据格式。我想围绕我的控制器对象与此解析器交互的方式创建结构,并提出以下简单结构。我希望社区可以就这种方式实施的优点/缺点提出任何意见或想法:
package
{
public interface IParser
{
function loadAd(adURL:String):void;
function parseAd():Object;
}
}
package
{
public interface IXMLParser implements IParser
{
function setAdData(adData:XMLNode):void;
}
}
package
{
public interface IJSONParser implements IParser
{
function setAdData(adData:JSON):void;
}
}
答案 0 :(得分:1)
我实际上在XML 2007大会的JSON和XML开幕会议上提出了这个建议。
两者都是树结构,并且期望它们可以共享接口是合理的。当然,每个都有其独特之处,你需要决定如何处理像XML这样的东西,以及JSON没有的名称空间。
但原则上,它可能是一个不错的主意,使用某种“嗅探器”来区分这两者。您可以找到XML文件here的开头和JSON文件here的定义。
我们的XML Converters产品实际上使用这个想法来自动确定要解析的EDI类型,然后调用相应的解析器和存储库。