2015-10-09 36 views
0

我想從在Episerver的編輯模式下創建的屬性中讀取XML文檔。如何從Episerver的屬性中讀取XML文檔

我已經做出'URL到文檔'類型的一個屬性。 當我試圖從後面的代碼中獲取它時,它只給出文件路徑。我無法讀取屬性中上傳的XML文件的內容。

string XMLContent = Currentpage.Getproperty<string>("XMLFile"); 

任何人都可以幫忙嗎?

回答

3

您還需要加載該文件。事情是這樣的:

var path = CurrentPage["XMLFile"] as string; 

if (HostingEnvironment.VirtualPathProvider.FileExists(path)) 
{ 
    var file = HostingEnvironment.VirtualPathProvider.GetFile(path) as UnifiedFile; 

    if (file != null) 
    { 
     using (var stream = file.Open()) 
     { 
      // Here is your XML document 
      var xml = XDocument.Load(stream); 
     } 
    } 
} 

您也可以通過使用磁盤,file.LocalPath本地路徑加載的文件內容。

+0

你好,謝謝你的回答。但是var stream = file.Open()不起作用。流對象中沒有獲取文件內容。錯誤:'((System.IO.Stream)(s))。ReadTimeout' – user2130929

+0

您可以打開文件小工具中屬性中指定的文件嗎?該錯誤表明您從磁盤讀取文件時遇到問題。 file.LocalPath說什麼?它是否爲您提供了磁盤上存在的路徑? –

+0

是的,file.LocalPath給了我正確的路徑。流變量給我的文件信息,但我怎麼讀取它的內容。 – user2130929

0

試試這個

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

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string XMLContent = ""; 

      //using XML 
      XmlDocument doc1 = new XmlDocument(); 
      doc1.LoadXml(XMLContent); 

      //using xml linq 
      XDocument doc2 = XDocument.Parse(XMLContent); 
     } 
    } 
} 
​ 
+0

該問題與將內容解析爲XML無關。這個問題實際上與產品EPiServer以及如何讀取文件有關。 –