0

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 ファイルが変更されると、エラーが発生します。

4

0 に答える 0