首页 > CyberArticle二次开发手册 > CyberArticle二次开发手册 – 4、CyberArticle 节点

CyberArticle二次开发手册 – 4、CyberArticle 节点


CyberArticle书籍内最重要的元素就是节点(ICANode)。无论是文件夹还是文章,都是一个节点。

节点的主要属性和方法

  • ID:节点的ID。书籍内每一个节点都有一个唯一的ID。
  • ParentID:节点的父节点ID。除了根节点,每一个节点,都有一个父节点。
  • ParentNode:节点的父节点。除了根节点,每一个节点,都有一个父节点。
  • Type:节点类型:0是文件夹,1是文章
  • Pos:位置。在同一级别的节点位置,按照从小到大排序。
  • DateCreated:创建时间
  • Color:文字颜色
  • BgColor:背景颜色
  • IconIndex:图标索引。>=0,是系统图标;<0:自定义图标
  • Title:标题
  • Owner:节点所有者。就是创建节点的CyberArticle所在的计算机的名称。
  • MoveTo:移动节点到另外一个节点。父节点,回收站不能移动。
  • MoveToRecycleBin:移动节点到回收站。如果节点已经在回收站,则彻底删除。
  • Delete:删除
  • GetPrevSiblingNode:获得当前节点的前一个同级别节点。
  • GetNextSiblingNode:获得当前节点的下一个同级别节点。
  • Attribute:扩展属性。可以用来存储任何数据。属性名称长度最大为50个字符,属性值的最大长度为255个字符。
  • Book:获得节点所在的书籍。
  • Size:文章或者文件夹的大小。
  • IsIn:可以判断一个节点是否在另外一个节点内。

文件夹独有的属性和方法

  • Children:获得文件夹的子节点。
  • FindChildNode:通过标题查找一个子节点。

文章独有的属性和方法

  • DateModified, DateAccessed:最后一次修改,访问文章时间。
  • Unread:文章是否未读
  • FileType:文件类型。对于保存的网页,是.htm,对于导入的文件,则是.doc, .pdf等等,保存了文件的扩展名。
  • Author:作者
  • Keywords:关键字
  • Label1, Label2, Label3, Label4, Label5:标签1-5
  • URL:文章的网址,或者导入的文件原始路径
  • Coments:注释
  • Text:文章里面的文字。如果是网页,则保存的网页里面的文字内容。
  • Article:获得文章对象(ICAArticle)。
  • Attachments:文件附件。(ICAAttachmentCollection)
  • InitArticle:设置文章内容。可以通过一个HTML字符串和一个网址,来初始化或者修改文章内容。
  • AddAttachment:添加附件。

书籍内的重要节点

  • 根节点。任何一个书籍都有一个根节点。在创建书籍的时候,系统会自动创建根节点。根节点的名称就是书籍的名称,根节点的ID为0。
  • 回收站。任何一个书籍都有一个回收站。在创建书籍的时候,系统会自动创建回收站。回收站的ID为-1。

关于节点对象的详细定义,请参考开发人员手册

书籍内创建节点,创建文件夹和文章,并且给文章设置内容。

下面是一个例子,用来打开每一个书籍,然后在根节点下面,查找 “I love CyberArticle” 这个文件夹。如果没有找到,则建立这个文件夹。然后在这个文件夹下面创建一个文章,并且用一段HTML文字来设置文章内容。

var objShell = new ActiveXObject(“WScript.Shell”);
function jsAlert(msg)
{
    return objShell.Popup(msg, 10000, “CyberArticle”, 0);
}
var objBookCollection = new ActiveXObject(“CyberArticleBook.CABookCollection”);
for (var i = 0; i < objBookCollection.Count; i++)
{
    var objBook = new ActiveXObject(“CyberArticleBook.CABook”); //创建ICABook对象
    //
    var guidBook = objBookCollection.GUID(i);   //获得书籍的GUID
    try
    {
        objBook.Open(guidBook); //打开书籍
    }
    catch (e)
    {
        continue;
    }
    //…
    var nodeRoot = objBook.RootNode;
    //
    var nodeILoveCyberArticle = null;
    try
    {
        nodeILoveCyberArticle = nodeRoot.FindChildNode(“I love CyberArticle”);  //根节点下面查找文件夹
    }
    catch (e)
    {
        //如果找不到,会有一个异常,我们在这里捕获这个异常。
    }
    //
    if (!nodeILoveCyberArticle || nodeILoveCyberArticle.Type != 0)  //如果没有找到,后者不是文件夹
    {
        nodeILoveCyberArticle = objBook.CreateFolder(nodeRoot, “I love CyberArticle”);  //创建一个新的文件夹
    }
    if (nodeILoveCyberArticle)
    {
        var nodeArticle = objBook.CreateArticle(nodeILoveCyberArticle, “My First SDK Article”);//创建文章
        //文章html
        var htmlText = “<html><head><title>My First SDK Article</title></head><body><h1>My First SDK Article</h1><p>Test text…</p><img src=http://www.wizbrother.com/screenshots/cyberarticle.png></img></body></html>”;
        //创建一个profile
        var objProfile = new ActiveXObject(“CyberArticleBook.CAProfile”);
        objProfile.Name = “Test”;
        objProfile.IncludeImages = true;
        objProfile.DownloadItems = true;
        //使用html文字设置文章内容
        nodeArticle.InitArticle(htmlText, “”, objProfile);
    }
    //…
    objBook.Close();
}

从上面的例子可以看到如何通过书籍获得根节点,然后在节点下面查找文件夹,创建子文件夹和文章,并且用一段HTML文字来初始化文章。HTML里面可以用用图片等等资源,CyberArticle会自动将图片也保存到书籍中,就和在浏览器内保存网页是一样的效果。

结果如下图:

通过这种方式,如果定义好一个模板,只需要输入一些文字,然后格式化成HTML文件,保存到书籍里面,我们就可以非常容易的批量的生成大量格式相同的文章,例如公文等等。而且由于HTML本身的公开和易用,使得控制格式,也非常简单。如果用C#或者其它高级语言编写一个这样的程序,用于生成公文之类的文章,相信应该非常有用。同时利用CyberArticle WebShare组件,将文章发布出去,就是一个简单易用的文档生成和发布系统。

 


  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

Spam Protection by WP-SpamFree