如何访问用于创建Xml Reader的SharePoint映射文件夹下的XML文件?

时间:2012-03-19 21:31:04

标签: c# xml sharepoint sharepoint-2010 xmlreader

SharePoint Mapped Folder Structure

我使用此代码访问SharePoint映射文件夹下的特定XML;

XmlReader reader = XmlReader.Create(Assembly.GetExecutingAssembly().GetManifestResourceStream( string.Format("{0}\\{1}", SPUtility.GetGenericSetupPath("TEMPLATE\\ADMIN\\AIP_RefinementPanel"), "CustomFilterCategoryDefinition.xml")));

但是我在部署期间遇到了错误。此代码无法访问此XML文件。我怎样才能解决问题?

谢谢,

MKacar

2 个答案:

答案 0 :(得分:3)

如果您知道Url for your Xml文件(并且您知道它是因为它是您的自定义Wsp和Xml文件部署到某个映射的虚拟文件夹),最好获取文件的本地文件系统路径并将其提供给XmlReader,如由于需要授权,它可能会因Url而失败。

例如我有一个项目,其中一些Xml和Xslt文件部署到'layouts'映射文件夹

enter image description here

我可以通过下一个方式访问Config.xml

var configDirPath = HttpContext.Current.Server.MapPath("/_layouts/LMUI/Configuration");
var configFilePath = configDirPath + "\\" + "Config.xml";

阅读HttpContext.Current.Server.MapPath http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.mappath.aspx上的MSDN文档以获取更多信息。

答案 1 :(得分:3)

如果省略对 GetManifestResourceStream 的调用,则代码应该有效。我想你想从文件系统中读取一个文件而不是嵌入到程序集中的资源。

string templatePath = SPUtility.GetGenericSetupPath("TEMPLATE");
string xmlPath = Path.Combine(templatePath, @"ADMIN\AIP_RefinementPanel\CustomFilterCategoryDefinition.xml");
XmlReader reader = XmlReader.Create(xmlPath);