2

Я пытаюсь прочитать XML-файл с XML-файлом. В моем WPF решения, это выглядело так:Чтение XML-файла с помощью XmlReader (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

Портативная библиотека классов не предоставляет унифицированный файловый ввод-вывод, поэтому вы не сможете получить доступ к своему XML-файлу с помощью этого подхода. Взгляните на [PCLStorage] (https://pclstorage.codeplex.com/) для мобильного подхода ввода-вывода. –

ответ

4

Вы не можете просто передать путь к файлу в Silverlight или Windows Store - у них есть разные способы доступа к сохраненному хранилищу. Вы можете использовать мою библиотеку PCL Storage, чтобы обеспечить общий способ ввода/вывода файлов в портативных библиотеках классов.

Я бы также рекомендовал прочитать мой пост на How to make Portable Class Libraries work for you для получения общего совета по использованию PCL.