【发布时间】:2014-07-16 11:21:46
【问题描述】:
所以在我的 winrt 应用程序上,我试图从我的一个应用程序文件夹上的 xml 文件加载一个类,但我遇到了一个问题,无论我做什么都会有问题,或者我有一个 missing file exception或者我有一个Data at the root level is invalid. Line 1, position 1. 下面是我尝试加载类的方式:
路径 = "<?xml version="1.0" encoding="utf-8" standalone="yes"?><cards></cards>"
Dim instance As T
Dim b As Byte() = Encoding.UTF8.GetBytes(path.ToString())
Dim Stream As New MemoryStream(b)
Dim serializer As XmlSerializer = New XmlSerializer(Type)
Dim reader As StreamReader = New StreamReader(Stream)
instance = DirectCast(serializer.Deserialize(reader), T)
Return instance
在instance = DirectCast(serializer.Deserialize(reader), T) 线上我得到一个System.IO.FileNotFoundException.. 好吧,让我们传递文件路径,在这种情况下 path = "ms-appx:///Data/cardsDB.xml"
Using reader2 As TextReader = New StringReader(path)
Dim xml2 As New XmlSerializer(Type)
instance = DirectCast(xml2.Deserialize(reader2), T)
End Using
Return instance
在同一行,instance = DirectCast(serializer.Deserialize(reader), T),在这种情况下,我得到Data at the root level is invalid. Line 1, position 1.,这实际上是正确的,因为如果我调试该行并打开reader2 选项,我可以看到_s = "ms-appx:///Data/cardsDB.xml".. 现在我真的迷路了在这里,如果我传递一个路径,我看不到 xml,当我传递 xml 时,我找不到文件。有人可以解释一下如何做到这一点:(
另外,当我在 vb 中使用 wpf 编程时,streamreader 可以获取字符串作为参数,在 winrt 上,streamreader 只能获取 io.stream..
上面使用的类是我在所有 wpf 应用程序中拥有和使用的标准类,它运行良好,仅在 winrt 上我对此感到非常痛苦..
谢谢。
【问题讨论】:
-
首先,我认为如果是我的代码,您的路径格式 (
ms-appx:///Data/cardsDB.xml) 会有些可疑(也许编译器不喜欢使用"/"而不是"\")。如果我是你,我会尝试将其放在C:\test(例如)下并将其加载为"C:\test\cardsDB.xml"?否则,如果我们无法查看您的 xml 文件的内部,我们无法为您提供第二条错误消息 (Data at the root level is invalid) 的帮助。 -
我将尝试从“/”更改为“\”,我将报告有关 xml 文件内部的内容。我的问题是关于它的外观,但我会复制它又在这里: path = "
" -
从“/”更改为“\”无效。我仍然遇到相同的例外情况,无论如何都感谢您的尝试。
标签: vb.net windows-phone-8 windows-store-apps