如何将XML文件添加到sharepoint项目

时间:2011-11-24 13:25:53

标签: xml sharepoint web-parts

我正在开发一个应该读取XML文件的webpart。为此,我创建了一个类,其中NodeValue()方法应返回节点内的文本。如果使用控制台应用程序进行测试,这确实有效,但是当我将此(读取器类和自定义XML文件)添加到我的SharePoint项目并尝试部署它时,我收到错误消息Web Part error: File Not Found。我尝试更改文件属性,以便将其添加到编译版本,但我似乎仍然无法指定文件的路径。这是读者类:

using System;
using System.Reflection;
using System.IO;
using System.Xml;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OrgChartPart.WebPartCode
{
class ReadXml
{

    public string FilePath { get; set; }

    public ReadXml()
    {
        FilePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)+"\\LAYOUTS\\config.xml";
    }

    public string NodeValue(int pos)
    {
        if (pos <= 0)
            return "invalid position!(this is not a node value)";

        XmlTextReader textReader = new XmlTextReader(FilePath);

        int counter = 0;

        while (counter != pos)
        {
            textReader.Read();
            if (textReader.NodeType.ToString() == "Text")
                counter++;
        }
        return textReader.Value;
    }
}
}

以下是网络部件代码的一部分,我在此实例化该类以读取文件:

StringBuilder sb = new System.Text.StringBuilder();

.......
            string position = null, link_type = null, link_color = null, 
                node_alignment = null, node_fill = null, node_color_style = null, hyperlinks = null;

            ReadXml readXml = new ReadXml();

            sb.Append(@"
........

我不知道我是否在识别文件的路径方面遇到问题,或者我是否需要提高访问权限的权限?或者,当解决方案部署时,目录结构会发生变化,所以我指定了错误的路径?你怎么看? 提前致谢

3 个答案:

答案 0 :(得分:0)

这绝对是SharePoint无法在指定路径中找到文件的问题。您可以将文件上载到文档库并从那里读取。

我的猜测是 - 在上述情况下,如果您的dll是基于bin的,代码将尝试从您的虚拟目录的bin文件夹生成物理路径。

此外 - SPContext.Current.Web.Url +“_layouts”+“模板下的文件夹”+“配置文件名”也应该有效。

HTH, Nitin Rastogi

答案 1 :(得分:0)

如果您想保存设置来管理Web部件,您可以通过这种方式提供此功能。您可以将设置放在web.config中,并以与标准ASP.NET应用程序相同的方式访问它们。但是我不认为这是个好主意,我认为最好使用SharePoint API来提供Web部件设置。 (幸运的是,设置启用Web部件非常容易。) It’s good example使用SharePoint API

答案 2 :(得分:0)

好吧,我设法解决了..有点...... 我通过SharePoint API(在服务器场上)添加了XML文件(或CSS或任何你想要的),之后我能够使用文件的虚拟路径访问该文件(您可以使用Sharepoint Design Manager查看目录结构和打开你的农场),