gpt4 book ai didi

c# - Sitecore 从媒体库加载 XML 文件?

转载 作者:数据小太阳 更新时间:2023-10-29 01:53:19 24 4
gpt4 key购买 nike

我正在尝试从媒体库加载 xml 文件,但遇到路径问题。当 xml 文件位于实际服务器文件中时,或者当它位于另一个托管站点上时,我已经能够加载 xml,但当文件位于媒体库中时则不能。 xml 文件是否必须是托管在某处的物理文件?

这是我检索媒体项路径的代码:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item sampleItem = master.GetItem("/sitecore/media library/Files/eBooks/testxml");
Sitecore.Data.Items.Item sampleMedia = new Sitecore.Data.Items.MediaItem(sampleItem);
string url = Sitecore.StringUtil.EnsurePrefix('/', Sitecore.Resources.Media.MediaManager.GetMediaUrl(sampleMedia));

然后,当我加载 xml 时,我将执行以下操作:

XmlDocument xDoc = new XmlDocument();
xDoc.Load(Server.MapPath(url));

它返回的路径是正确的,因为我已经测试过将它放在 anchor 标记中以查看它是否会链接到 xml 文件,并且确实如此。我在这个网站上找到了类似的帖子,但似乎没有一个在 xml.Load 的上下文中解决媒体库项目。

如能提供任何有关这是否可行或我可以做些什么来使其发挥作用的信息,我们将不胜感激。

谢谢。

最佳答案

使用媒体流而不是尝试传递路径或使用 WebClient:

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
Sitecore.Data.Items.Item sampleItem = master.GetItem("/sitecore/media library/Files/testxml");
Sitecore.Data.Items.Item sampleMedia = new Sitecore.Data.Items.MediaItem(sampleItem);

XmlDocument xmdDoc = new XmlDocument();
xmdDoc.Load(MediaManager.GetMedia(sampleMedia).GetStream().Stream);

关于c# - Sitecore 从媒体库加载 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12079486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com