Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Problem] Xml reading


Rekomendowane odpowiedzi

Opublikowano

Witam, mam pewien problem z nieznanej przyczyny bo dopiero drugi raz bawię się z .xml. Kawałek kodu napisałem sam kawałek gotowca ;d

Trochę jest pomieszany -.-, kodzik poprawię sam na koniec bo to jest na 'brudno' :)

http://pastebin.com/py2eZ4Z1

Tylko że jest błąd: Element 'Path' was not found. Line 1, position 2320.

Co on oznacza ?, jak to naprawić ?

Trochę dużo tych readów :x

Jeśli potrzeba pliczek .xml: http://flashnet.herobo.com/CheckSum.xml

Opublikowano


'(MD5Sums)

' (File Path="plik" MD5="a23291uh391y0194124"/)

'(/MD5Sums)

'

' ( = <

' ) = > ...

 

 

'Polecam CRC32 ponieważ jest szybsze.

 

Option Explicit On

Option Strict On

 

Imports System.Xml

Imports System.Net

Imports System.IO

Imports System.Text

 

<System.Diagnostics.DebuggerStepThrough()> _

Friend Class CRC32

 

 

Private crc32Table() As Integer

Private Const BUFFER_SIZE As Integer = 1024I

 

Friend Function GetCrc32(ByRef stream As System.IO.FileStream) As Integer

Dim crc32Result As Integer = &HFFFFFFFF

 

Dim buffer(BUFFER_SIZE) As Byte

Dim readSize As Integer = BUFFER_SIZE

Dim count As Integer = stream.Read(buffer, 0I, readSize)

Dim i As Integer

Dim iLookup As Integer

 

Do While (count > 0I)

For i = 0I To count - 1I

iLookup = (crc32Result And &HFF) Xor buffer(i)

crc32Result = ((crc32Result And &HFFFFFF00) \ &H100) And &HFFFFFF ' nasty shr 8 with vb :/

crc32Result = crc32Result Xor crc32Table(iLookup)

Next i

count = stream.Read(buffer, 0I, readSize)

Loop

Return Not (crc32Result)

End Function

 

Friend Function GetCrc32String(ByRef stream As System.IO.FileStream) As String

Return String.Format("{0:X8}", GetCrc32(stream))

End Function

 

Friend Sub New()

' This is the official polynomial used by CRC32 in PKZip.

' Often the polynomial is shown reversed (04C11DB7).

Dim dwPolynomial As Integer = &HEDB88320

Dim i, j As Integer

 

ReDim crc32Table(256I)

Dim dwCrc As Integer

 

For i = 0I To 255I

dwCrc = i

For j = 8I To 1I Step -1I

If (dwCrc And 1I) > 0I Then

dwCrc = ((dwCrc And &HFFFFFFFE) \ 2I) And &H7FFFFFFF

dwCrc = dwCrc Xor dwPolynomial

Else

dwCrc = ((dwCrc And &HFFFFFFFE) \ 2I) And &H7FFFFFFF

End If

Next j

crc32Table(i) = dwCrc

Next i

End Sub

End Class

 

 

Module Module1

 

Private WithEvents Downloader As New Net.WebClient

 

Public Function CRC32(ByVal file As String) As String

Dim Crc_Class As New CRC32

Dim Formated_CRC_String As String

Dim FileStream As New FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read, 8192I)

 

Formated_CRC_String = Crc_Class.GetCrc32String(FileStream)

 

FileStream.Close()

Return Formated_CRC_String

End Function

 

Sub Main()

Dim Downloaded_XML As String

Dim Index As Integer = 0

Dim CRC32_list(255) As String

Dim Path_list(255) As String

Dim wrong_files(255) As Integer

 

Try

Downloaded_XML = Downloader.DownloadString("http://xxx.pl/file.xml")

Catch ex As Exception

MsgBox("Wystąpił błąd: " & ex.Message, MsgBoxStyle.Information)

End

End Try

 

Dim reader As XmlTextReader = New XmlTextReader(New StringReader(Downloaded_XML))

Do While (reader.Read())

Select Case reader.NodeType

Case XmlNodeType.Element

If reader.Name = "CRC32Sums" And reader.HasAttributes Then

While reader.MoveToNextAttribute()

If reader.Name = "Path" Then

Path_list(Index) = reader.Value

ElseIf reader.Name = "Crc32" Then

CRC32_list(Index) = reader.Value

Index += 1

End If

End While

End If

End Select

Loop

reader.Close()

 

Index = 0

' Czas na sprawdzanie plików :)

 

For i = 0 To Path_list.GetUpperBound(0)

If IO.File.Exists(Path_list(i)) Then

If CRC32(Path_list(i)) <> CRC32_list(i) Then

wrong_files(Index) = i

Index += 1

End If

 

End If

Next

 

 

' Dalej powinienies dać sobie rade tablica wrong_files zawiera id plików z tablicy patch_list które trzeba pobrać

 

End Sub

 

End Module

 

 

7j66.png
Opublikowano

@up

nie chce mi się przerabiać md5 checkera i programu..

Lepiej pobierać wadliwy plik od razu po rozpoznaniu czy zrobić liste wadliwych i je pobrać?

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...