首页 > CyberArticle二次开发手册 > CyberArticle二次开发手册 – 5、CyberArticle 文章

CyberArticle二次开发手册 – 5、CyberArticle 文章


每一个CyberArticle文章,都是一个HTML文件。CyberArticle将HTML以及所包含的图片等资源,打包并压缩成一个zip数据包,保存在数据库的Nodes.Article字段内。

文章节点,都有一个Article属性,可以获得HTML文章对象(ICAArticle)。

ICAArticle对象的主要属性和方法

  • SaveAsHTML:保存成一个HTML文件。采用unicode编码。
  • SaveAsHTMLAnsi:保存成一个HTML文件,采用ansi或者多字节编码,例如gb2312,utf-8等编码。具体编码,由html文件里面原始的编码指定。如果原始编码是unicode,则保存后采用utf-8编码。
  • SaveAsHTMLAnsiEx:保存成HTML文件,采用ansi或者多字节编码。可以指定是否允许使用utf-8编码。如果不允许使用utf-8,则会采用当前系统的默认字符集老保存那些unicode文件。
  • SaveAsMime:保存成mime文件,扩展名一般是.mht。
  • Children属性:或者HTML资源(ICAArticleResourceCollection)。

ICAArticleResourceCollection说明

ICAArticleResourceCollection是一个文章资源集合,除了具有Count和Item两个属性外,还有其它几个重要的方法。利用这个对象,可以删除或者更新某一个文章资源,例如更新或者删除里面的某一个图片。

  • Count:获得HTML资源的数量。包括HTML代码本身。
  • Item:活的某一个资源。Item(0)就是文章的HTML代码(ICAArticleResource)。
  • ItemFromName:通过资源名称,获得某一个资源。按照名称查找的时候,不区分大小写。
  • BeginUpdate:开始更新资源。如果要删除或者更新某一个资源,在删除或者更新之前,需要调用该方法。
  • EndUpdate:结束更新资源。如果要删除或者更新某一个资源,在删除或者更新之后,需要调用该方法。调用之后,会把修改后的数据保存到数据库。
  • GetArticleSourceCode:获得文章的HTML代码。在调用GetArticleSourceCode之前,不需要调用BeginUpdate。
  • SetArticleSourceCode:设置文章的HTML代码。在调用SetArticleSourceCode之前,也需要调用BeginUpdate。之后调用EndUpdate,才会保存数据。

ICAArticleResourceCollection对象主要的功能,就是可以单独更新或者删除某一个资源。

ICAArticleResource对象主要属性和方法

通过ICAArticleResourceCollection.Item,可以获得每一个文章资源。文章资源对象就是ICAArticleResource。

  • Name:资源名称,就是保存成HTML之后的文件名(不包含路径)
  • URL:资源的URL,例如HTML里面的某一个图片的原始URL。
  • Size:资源的大小。
  • SaveToStream:将资源数据,保存到一个IStream里面。

例子

下面的代码,我们在一个书籍内建立一个新的文章,然后把文章保存成HTML文件,并且获得其中的每一个文章资源,显示出文章资源的名称和URL。

var objShell = new ActiveXObject(“WScript.Shell”);
function jsAlert(msg)
{
    return objShell.Popup(msg, 10000, “CyberArticle”, 0);
}
function Test()
{
    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 nodeArticle = objBook.CreateArticle(nodeRoot, “My 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);
        //
        var objArticle = nodeArticle.Article;   //获得ICAArticle对象
        objArticle.SaveAsHTML(“T:\\temp\\1.htm”);   //保存成HTML文件
        //
        var objArticleResourceCollection = objArticle.Children; //获得ICAArticleResourceCollection
        for (var iResource = 0; iResource < objArticleResourceCollection.Count; iResource++)
        {
            var objArticleResource = objArticleResourceCollection.Item(iResource);
            //
            if (0 == iResource)
            {
                //第一个资源,显示HTML代码
                jsAlert(objArticleResourceCollection.GetArticleSourceCode());
            }
            else
            {
                //显示资源名称和URL
                jsAlert(objArticleResource.Name + “\n” + objArticleResource.URL);
            }
        }
        //…
        objBook.Close();
        //
        return;
    }
}
Test();

程序运行后的效果如下图:

Item(0),显示文章HTML代码。注意看里面有一个%ResourceFilePath% / cyberarticle[1].png。在CyberArticle保存后的HTML代码里面,%ResourceFilePath%代表了HTML资源所在的子目录名称,例如xxx_files。在保存成html的时候,CyberArticle会自动替换。

下面显示了资源的名称和URL(就是初始化html的时候引用的图片)。

从上面的的例子中可以看到,通过文章对象,可以轻松的操作CyberArticle里面的文章。


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

Spam Protection by WP-SpamFree