具有属性继承和事件冒泡的分层对象模型?

时间:2009-09-03 02:43:51

标签: c# java dom model client

我正在编写基于文档的客户端应用程序,我需要一个 DOM WPF ,但非可视模型:

  • 是由元素
  • 组成的
  • 可以接受无限数量的自定义属性
    • 获取/设置任何CLR类型,包括集合。
    • 可以从父级
    • 继承他们的值
    • 可以继承祖先的默认值
    • 可以从其他属性,祖先或后代派生/计算
    • 支持事件冒泡/隧道
    • 将有一组核心属性,但其他插件可能会添加自己的属性,甚至可以创建自定义文档
  • 支持拥有文档的完整检查,以便以XML格式保存树和属性。

我意识到这是一个很高的订单,但我真的希望有一些东西可以帮助我开始。不幸的是,WPF DependencyObjects过于封闭,专有,并且与WPF耦合,可以用作文档模型。我的需求也与HTML DOM非常相似,但我找不到任何可以与HTML分离或移植到.NET的干净DOM实现。

我目前的平台是.NET / C#但是如果有人知道任何可能对灵感或嵌入有用的东西,无论平台,我都很想知道。

5 个答案:

答案 0 :(得分:1)

我认为它不符合您指定的所有要求,但您是否考虑过使用XML DOM(而不是HTML DOM)?您可以在.NET中以编程方式创建XML文档,并使用DOM方法和属性对其进行操作,还可以执行XPath查询等操作。查看.NET的XmlDocument对象。这可能是一个合理的起点。

答案 1 :(得分:0)

也许XMLBeans可以提供帮助。

答案 2 :(得分:0)

Eclipse EMF可能有所帮助,但对您来说也可能有点过头了。恕我直言设计良好的语言应该使这项任务非常容易......

答案 3 :(得分:0)

Netbeans平台几乎完全符合您的要求。

答案 4 :(得分:0)

您是否在寻找对象模型的建议?怎么样:

// C#-ish code that probably doesn't compile
class Element {
    public object GetAttribute(string attribute) {
        if (this.Attributes.HasKey(attribute))
            return this.Attributes[attribute];
        else
            return this.Parent.GetAttribute(attribute);
    }

    private IDictionary<string,object> Attributes;

    private Element Parent;
    private IList<Element> Children;    // maybe not needed

    // etc.
}

从那里开始?