2

我正在嘗試使用XMLReader讀取XML文件。在我的WPF的解決方案,它是這樣的:使用XmlReader讀取XML文件(PortableClassLibrary)

public XmlDocument XmlDoc; 
XmlReaderSettings settings; 
XElement Catalogue; 

public void LoadXML(string XML_File) 
{ 
    XmlReader reader = XmlReader.Create(XML_File, settings); 
    XmlDoc.Load(reader); 

    Catalogue = XElement.Load(new XmlNodeReader(XmlDoc)); 
} 

由於我使用的是便攜式類庫(Silverlight中,WP8,.NET 4.5,Windows 8中),沒有XMLDocument並沒有XmlNodeReader。我試着做現在這個樣子:

public void LoadXML(string XML_File) 
{ 
    XmlReader reader = XmlReader.Create(); 

    XDocument XmlDocx = XDocument.Load(reader); 

    Catalogue = XElement.Load(reader); 
} 

,但我不知道我怎樣才能把字符串XML_File(其中包含如「users.xml中」)插入讀卡器中。 XmlReader.Create()需要作爲StreamReader或TextReader的參數,並且當我聲明新的StreamReader時,StreamReader需要作爲參數Stream ...?所以,是的,我做了這樣的

public void LoadXML(string XML_File) 
{ 
    //How to put the XML_File in the Stream? 
    //I could say Stream sra = Stream.Null; - but I still need to put the XML_File string somehow into the reader 
    Stream s = new Stream(); 
    StreamReader sr = new StreamReader(s); 

    XmlReader reader = XmlReader.Create(sr); 

    XDocument XmlDocx = XDocument.Load(reader); 

    Questions = XElement.Load(reader); 
} 

我怎樣才能把XML_FILE(「users.xml中」)插入讀卡器,這樣我可以用我的XmlDoc加載讀者?

+0

可移植類庫不提供統一的文件I/O,所以您將無法通過此方法訪問您的XML文件。查看[PCLStorage](https://pclstorage.codeplex.com/),瞭解便攜式文件I/O方法。 –

回答

4

您不能只將路徑傳遞到Silverlight或Windows應用商店中的文件 - 它們有不同的方式來訪問持久存儲。您可以使用我的PCL Storage庫提供便攜式類庫中File I/O的常用方法。

我也建議閱讀我的文章How to make Portable Class Libraries work for you關於使用PCL的一些一般性建議。