我对Java还是比较陌生,尽管我知道如何使用它,但我并不真正了解它的机制。在这里忍受我。

我需要编写一个小应用程序,根据我作为XML文件接收的数据创建一个图表(在SVG中)。我发现PlotKit确实满足了我的需要,除了它是用Java脚本编写的,而我当前的程序是用c#编写的。我进行了一些谷歌搜索,发现了一些文章,这些文章解释了如何使用.NET VsaEngine类评估简单的Javascript代码。不幸的是,我绝对不知道如何使用VsaEngine执行需要引用其他文件的更复杂的Javascript。基本上,我想要的是c#能够像Javascript这样调用:

var layout = new PlotKit.Layout("bar", {});
layout.addDataset("data", [[0, 0], [1, 1], [2, 2]]);
layout.evaluate();
var canvas = MochiKit.DOM.getElement("graph");
var plotter = new PlotKit.SVGRenderer(canvas, layout, {});
var svg = SVGRenderer.SVG();


并获取图表的SVG字符串。我不知道如何制作它,以便上面的脚本知道在哪里寻找所有必需的对象。如果要制作一个网页来执行此操作,则只需添加一些引用/plotkit/Layout.js、/plotkit/Canvas.js等的脚本标头,Javascript就可以正常工作。

如果有人可以确切地解释我将如何通过C#使用PlotKit,或者可以解释一种更有效的方式来执行此操作,我将不胜感激。

编辑:我知道我对这个问题不太清楚-我需要我的c#程序来模拟Javascript引擎并使用PlotKit库,而无需实际运行网络浏览器。有什么办法吗?

最佳答案

PlotKit是一个JavaScript库,旨在在客户端的Web浏览器中执行。 C#在服务器上执行。为了实现两者之间的通信,您将呈现希望传递到服务器上PlotKit的所有数据,然后以发送给客户端的HTML输出。

因此,在后面的C#代码中,您将构造将传递给PlotKit的addDataset方法的JSON对象。

...
    public partial class Default : System.Web.UI.Page
    {
        protected string PlotKitData = "[]";

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Page.IsPostBack) PlotKitData = GenerateJSON();
...


然后在您的ASPX代码中,您将遇到类似这样的情况。

<script>
    var layout = new PlotKit.Layout("bar", {});
    layout.addDataset("data", <%=PlotKitData%>);
    layout.evaluate();
    var canvas = MochiKit.DOM.getElement("graph");
    var plotter = new PlotKit.SVGRenderer(canvas, layout, {});
    var svg = SVGRenderer.SVG();
</script>

09-25 18:02