2

我正在尝试使用 XMLReader 读取 xml 文件。在我的 WPF 解决方案中,它看起来像这样:

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

4

1 回答 1

4

您不能只将路径传递给 Silverlight 或 Windows Store 上的文件——它们有不同的方式来访问持久存储。您可以使用我的PCL 存储库来提供一种在可移植类库中执行文件 I/O 的通用方法。

我还建议阅读我关于如何使可移植类库为您工作的文章,以获得有关使用 PCL 的一些一般性建议。

于 2013-06-20T17:59:14.740 回答