XMLファイルをダウンロードし、データを読み取り、テキストボックスに出力するVB.netでWindows Phone用のプログラムを作成しています。その後、3 秒ごとにこのプロセスを繰り返します。私が抱えている問題は、XML ファイルの長さが変わると、
「.」(16 進値 0x00) は無効な文字です
ファイルが小さくなった場合
予期しないファイルの終わりが発生しました
大きくなったら。起動時と 3 秒ごとに実行されるコードは次のとおりです。
Dim doc = XDocument.Parse(xmlstring)
ここで、xmlstring は、xml ドキュメントのコンテンツ全体を含む文字列です。私は何をすべきか?
-アップデート-
これがすべてのコードです。
Imports System.Xml.Linq
Partial Public Class MainPage
Inherits PhoneApplicationPage
Private WithEvents dt As System.Windows.Threading.DispatcherTimer
Private wbcl As New WebClient 'WebClient for downloading XML as string
' Constructor
Public Sub New()
InitializeComponent()
' Set the data context of the listbox control to the sample data
DataContext = App.ViewModel
End Sub
' Load data for the ViewModel Items
Private Sub MainPage_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) Handles Me.Loaded
If Not App.ViewModel.IsDataLoaded Then
App.ViewModel.LoadData()
End If
AddHandler wbcl.DownloadStringCompleted, AddressOf cl_DownloadStringCompleted 'adds handler for download complete
wbcl.DownloadStringAsync(New Uri("http://www.copycatmusicracine.com/app/ccatnowplaying.xml?" + "time=" + DateTime.Now.Ticks.ToString)) 'downloads xml as string
dt = New System.Windows.Threading.DispatcherTimer() 'creates timer
dt.Interval = New TimeSpan(0, 0, 0, 0, 3000) ' dt_Tick every 3 seconds
dt.Start() 'starts timer
End Sub
Private Sub dt_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles dt.Tick
AddHandler wbcl.DownloadStringCompleted, AddressOf cl_DownloadStringCompleted 'adds handler for download complete
wbcl.DownloadStringAsync(New Uri("http://www.copycatmusicracine.com/app/ccatnowplaying.xml?" + "time=" + DateTime.Now.Ticks.ToString)) 'downloads xml as string
End Sub
Private Sub cl_DownloadStringCompleted(sender As Object, e As System.Net.DownloadStringCompletedEventArgs)
Dim xmlstring As String = e.Result 'puts XML as string into a new variable
Dim doc = XDocument.Parse(xmlstring) 'XML is parsed
If doc.<song>.<title>.Value = "NULL" Then
'Stuff to happen when song is not playing
Else
'Stuff to happen when song is playing
End If
End Sub
End Class
前述したように、コードは最初は機能しますが、起動後に XML ファイルが変更されると、エラーが発生します。