公司内部有很多部门都创建了Wiki库,来做知识共享。公司是Hosting的SharePoint环境,不能写服务器端代码,要操作Wiki只能通过Web Service来完成,所以,碰到两个情况:

1)Wiki库中已经有了几百篇的文章,文章中有些文字需要更新,几百篇文章手动更新肯定累死;

2)有人想写个程序,自动将包含图片的Word文档内容新建成Wiki;

说白了,其实就是如何使用SharePoint Web Service来新建和更新Wiki页面。

在SharePoint里面,Wiki虽然也可以看成是List,但是又有些特殊,每篇Wiki就是一个aspx页面,Wiki的内容则存储在Wiki条目的WikiField字段里面。

1)对于更新Wiki页面的内容,我们可以使用Lists.asmx的UpdateListItems来完成:

以下是一个批量替换Wiki内容中的一段文字的代码示例:

Lists.Lists SPLists = new Lists.Lists();
SPLists.Credentials = System.Net.CredentialCache.DefaultCredentials;
SPLists.Url = strListsSvrURL; //拼更新列表字段的XML
XmlDocument doc = new XmlDocument();
XmlElement batch = doc.CreateElement("Batch");
batch.SetAttribute("OnError", "Continue");
batch.SetAttribute("ListVersion", "1"); //获取Wiki库的所有Wiki条目
XmlNode ListItems = SPLists.GetListItems(strWikiLibName, null, null, null, null, null, null); foreach (XmlNode ListItem in ListItems.ChildNodes[1].ChildNodes)
{
if (ListItem.Attributes != null)
{
try
{
batch.InnerXml += "<Method ID='1' Cmd='Update'>" +
"<Field Name='ID'>" + ListItem.Attributes["ows_ID"].Value + "</Field>" +
"<Field Name='WikiField'><![CDATA[" + ListItem.Attributes["ows_WikiField"].Value.Replace(strOriginal, strNew) + "]]></Field>"
+ "</Method>";
}
catch { }
}
}
SPLists.UpdateListItems(strWikiLibName, batch);

 

 

2)对于新建Wiki页面,我们不能使用Lists.asmx的UpdateListItems,通过传递<Method ID='1' Cmd='New'>…命令来完成,一个办法是使用Copy.asmx,复制Wiki库中的一个Wiki页面,生成一个新的Wiki页面,更新它的WikiField字段。

string strWikiHomeURL = "http://site/wiki/home.aspx";

Copy.Copy SPListCopy = new Copy.Copy();
SPListCopy.Credentials = System.Net.CredentialCache.DefaultCredentials;
SPListCopy.Url = strCopySvrURL; Copy.FieldInformation[] HomePagefieldInformation;
byte[] HomePageContentBytes; uint myGetUint = SPListCopy.GetItem(
strWikiHomeURL,
out HomePagefieldInformation,
out HomePageContentBytes); //Wiki Page Title
string WikiName = "New" + DateTime.Now.ToString();
WikiName = WikiName.Replace("/", "").Replace(":", "").Replace(" ",""); Copy.FieldInformation headerInformation = new Copy.FieldInformation();
headerInformation.DisplayName = "Name";
headerInformation.InternalName = "LinkFilename";
headerInformation.Type = Copy.FieldType.Note;
headerInformation.Value = WikiName; Copy.FieldInformation contentType = new Copy.FieldInformation();
contentType.DisplayName = "ContentType";
contentType.InternalName = "ContentType";
contentType.Type = Copy.FieldType.Text;
contentType.Value = "Wiki Page"; Copy.FieldInformation wikiField = new Copy.FieldInformation();
wikiField.DisplayName = "Wiki Content";
wikiField.InternalName = "WikiField";
wikiField.Type = Copy.FieldType.Text;

引用自:http://blog.knowsky.com/177404.htm

如何使用Web Service新建和更新Wiki页面的内容的更多相关文章

  1. 使用XFire+Spring构建Web Service

    XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用. 相 对于Axis来说,目 ...

  2. Java与WCF交互(二):WCF客户端调用Java web service【转】

    原文:http://www.cnblogs.com/downmoon/archive/2010/08/25/1807982.html 在上篇< Java与WCF交互(一):Java客户端调用WC ...

  3. 转载——Java与WCF交互(二):WCF客户端调用Java Web Service

    在上篇< Java与WCF交互(一):Java客户端调用WCF服务>中,我介绍了自己如何使用axis2生成java客户端的悲惨经历.有同学问起使用什么协议,经初步验证,发现只有wsHttp ...

  4. 从Web Service和Remoting Service引出WCF服务

    本篇先通过Web Service和Remoting Service创建服务,抛砖引玉,再体验WCF服务.首先一些基本面: 什么是WCF? Windows Communication Foundatio ...

  5. .NET基础拾遗(7)Web Service的开发与应用基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  6. 关于WEB Service&WCF&WebApi实现身份验证之WCF篇(2)

    因前段时间工作变动(换了新工作)及工作较忙暂时中断了该系列文章,今天难得有点空闲时间,就继续总结WCF身份验证的其它方法.前面总结了三种方法(详见:关于WEB Service&WCF& ...

  7. Beaglebone Black– 智能家居控制系统 LAS - 网页服务器 Node.js 、Web Service、页面 和 TCP 请求转 UDP 发送

    上一篇,纯粹玩 ESP8266,写入了 init.lua 能收发 UDP.这次拿 BBB 开刀,用 BBB host 一个 web server ,用于与用户交互,数据来自 ESP8266 的 UDP ...

  8. VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法

    下面是一篇文章比较详细,其实具体操作很简单,把Web Service服务地址,利用工具(VS2010),通过添加引用的形式,添加到项目中来就可以应用了. 大家如果这个地方不会操场的话,可以问问我QQ: ...

  9. 2.1 Apache Axis2 快速学习手册之 POJO 构建Web Service

    1. 准备:创建一个Maven Web App 项目 这里让我们使用Maven 模板创建一个Web App 项目 1. New------> Maven Project 2. 使用默认配置,点击 ...

随机推荐

  1. node学习笔记3——文件操作fs

    文件操作关键字: http('fs') ——  请求 node 里面的 http 模块 readFile ——  读文件,参数包括 文件名,回调函数 writeFile ——  写文件,参数包括 文件 ...

  2. node学习笔记2——搭建服务器

    搭建服务器关键词: require('http') —— 请求 node 里面的 http 模块 createServer —— 创建一个服务器 request —— 请求 response—— 响应 ...

  3. FileZilla等软件搭建ftp服务器

    一.常用的几款ftp服务器软件介绍 1.1 Server-U Serv-U是一种被广泛运用的FTP服务器端软件,支持3x/9x/ME/NT/2K/2000/xp等全Windows系列.可以设定多个FT ...

  4. Mininet的介绍&安装

    Mininet的介绍 Mininet是一个强大的网络仿真平台,通过这个这个平台,我们可以很方便的模拟真实环境中的网络操作与架构.当前SDN/OpenFlow发展的如火如荼,但是在真实网络中又不可以进行 ...

  5. 在kali linux之下 下载并解压的文件名呈现乱码 解决方案

    从Linux往 windows拷贝文件或者从windows往Linux拷贝文件,有时会出现中文文件名乱码的情况,出现这种问题的原因是因为,windows的文件名中文编码默认为GBK,而Linux中默认 ...

  6. 关于Unity中DOTween插件的使用(专题一)

    DOTween flash里面的一个概念叫补间动画,DOTween就是干这个事情的. 补间动画:在1秒钟之内从A点移动到B点,在这个之间会把动画补间补好. 当我们安装好DOTween后,它就会提供很多 ...

  7. SphereFace的原理

    https://blog.csdn.net/qianqing13579/article/details/78288780

  8. Oracle触发器给表自身的字段重新赋值出现ORA-04091异常

    业务描述如下: 在插入一个表的时候,需要根据一个字段的值更新另一个字段的值.当然也可以通过程序就能很简单得实现,只是这个字段只是数据交换用,和系统主业务没关系,不想修改程序,所以才用触发器的方式实现. ...

  9. 《经久不衰的Spring框架:@ResponseBody 中文乱码》(转)

    转载自:http://www.cnblogs.com/shanrengo/p/6429291.html 问题背景 本文并不是介绍@ResponseBody注解,也不是中文乱码问题的大汇总笔记,这些网上 ...

  10. IE10假死/未响应是为什么?

    不知道大家在使用IE10的时候会不会有像是假死一样的情况发生,在打开网页或者进行任何操作都会变得奇慢无比.随着最近在网上看视频的次数越来越多,这个问题越来越突出,越来越频发.于是分析进程的等待链,看看 ...