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的一些一般性建议。