2015-10-20 10:27:29 +02:00

240 lines
9.0 KiB
VB.net

Imports System.Xml
Imports System.IO
Public Class Parser
Private _path As String
Private _marks As New List(Of Mark)
Public Sub New()
End Sub
#Region "Parse Results of Search"
Public Function ReadMarkXML(doc As XmlDocument) As List(Of Mark)
Using reader As XmlTextReader = New XmlTextReader(New StringReader(doc.OuterXml))
While reader.Read()
If reader.IsStartElement() Then
If reader.Name = "Entries" Then
Dim mark As Mark = CreateMark(reader.ReadSubtree())
_marks.Add(mark)
End If
End If
End While
End Using
Return _marks
End Function
Public Function ReadMarkXMLFile(path As String) As List(Of Mark)
Using reader As XmlReader = XmlReader.Create(path)
While reader.Read()
If reader.IsStartElement() Then
If reader.Name = "Entries" Then
Dim mark As Mark = CreateMark(reader.ReadSubtree())
_marks.Add(mark)
End If
End If
End While
End Using
Return _marks
End Function
Private Function CreateMark(r As XmlReader) As Mark
Dim mark As New Mark()
While r.Read()
If r.IsStartElement() Then
If r.NodeType = XmlNodeType.Element Then
'Console.WriteLine("Name: {0} - Value: {1} - HasValue: {2}", r.Name, r.Value, r.HasValue)
Select Case r.Name
Case "Applicant"
mark.Applicant = r.ReadInnerXml()
Case "ApplicationNumber"
mark.ApplicationNumber = r.ReadInnerXml()
Case "ApplicationDate"
mark.ApplicationDate = r.ReadInnerXml()
Case "MarkFeature"
mark.MarkFeature = r.ReadInnerXml()
Case "MarkVerbalElementText"
mark.MarkVerbalElementText = r.ReadInnerXml()
Case "RegistrationOfficeCode"
mark.RegistrationOfficeCode = r.ReadInnerXml()
Case "RegistrationDate"
mark.RegistrationDate = r.ReadInnerXml()
Case "Representative"
mark.Representative = r.ReadInnerXml()
Case "Classification"
mark.Classification = r.ReadInnerXml()
End Select
End If
End If
End While
Return mark
End Function
#End Region
#Region "Parse Results of GetRegisterInfo"
Public Sub ReadMarkRegisterInfoXMLFile(path As String, ByRef mark As Mark)
Using reader As XmlReader = XmlReader.Create(path)
While reader.Read()
If reader.IsStartElement() Then
If reader.Name = "TradeMark" Then
ReadTradeMark(reader.ReadSubtree(), mark)
End If
End If
End While
End Using
End Sub
Public Sub ReadMarkRegisterInfoXML(doc As XmlDocument, ByRef mark As Mark)
Using reader As XmlReader = New XmlNodeReader(doc)
While reader.Read()
If reader.IsStartElement() Then
If reader.Name = "TradeMark" Then
ReadTradeMark(reader.ReadSubtree(), mark)
End If
End If
End While
End Using
End Sub
Private Sub ReadTradeMark(r As XmlReader, ByRef mark As Mark)
While r.Read()
If r.IsStartElement() Then
If r.NodeType = XmlNodeType.Element Then
Select Case r.Name
Case "ExpiryDate"
mark.ExpiryDate = r.ReadInnerXml()
Case "RegistrationNumber"
mark.RegistrationNumber = r.ReadInnerXml()
Case "MarkRecordDetails"
ReadMarkRecordDetails(r.ReadSubtree(), mark)
Case "GoodsServicesDetails"
ReadGoodsDetails(r.ReadSubtree(), mark)
Case "PublicationDetails"
r.ReadToFollowing("PublicationDate")
mark.PublicationDate = r.ReadInnerXml()
Case "OppositionPeriodStartDate"
mark.OppositionPeriodStartDate = r.ReadInnerXml()
Case "OppositionPeriodEndDate"
mark.OppositionPeriodEndDate = r.ReadInnerXml()
Case "MarkImage"
ReadImageDetails(r.ReadSubtree(), mark)
Case "MarkCurrentStatusCode"
mark.MarkCurrentStatusCode = r.ReadInnerXml()
End Select
End If
End If
End While
End Sub
Private Sub ReadImageDetails(r As XmlReader, ByRef mark As Mark)
Dim image As New ImageDetail()
While r.Read()
If r.IsStartElement() Then
If r.NodeType = XmlNodeType.Element Then
Select Case r.Name
Case "MarkImageBinary"
image.BinaryImage = r.ReadInnerXml()
Case "Height"
image.Height = r.ReadInnerXml()
Case "Width"
image.Width = r.ReadInnerXml()
Case "MarkImageFileFormat"
image.Format = r.ReadInnerXml()
End Select
End If
End If
End While
mark.Image = image
End Sub
Private Sub ReadGoodsDetails(r As XmlReader, ByRef mark As Mark)
While r.Read()
If r.IsStartElement() Then
If r.NodeType = XmlNodeType.Element Then
Select Case r.Name
Case "ClassificationKindCode"
mark.ClassificationKindCode = r.ReadInnerXml()
Case "ClassificationVersion"
mark.ClassificationVersion = r.ReadInnerXml()
Case "ProposedLeadingClassNumber"
mark.ProposedLeadingClassNumber = r.ReadInnerXml()
Case "ClassDescription"
ReadClassDescription(r.ReadSubtree(), mark)
Case "de:GoodsServicesNotClassifiedDescription"
mark.GoodsServicesNotClassified = r.ReadInnerXml()
End Select
End If
End If
End While
End Sub
Private Sub ReadClassDescription(r As XmlReader, ByRef mark As Mark)
Dim detail As New ClassificationDetail()
While r.Read()
If r.IsStartElement() Then
If r.NodeType = XmlNodeType.Element Then
Select Case r.Name
Case "ClassNumber"
detail.ClassNumber = r.ReadInnerXml()
Case "GoodsServicesDescription"
detail.GoodsServicesDescription = r.ReadInnerXml()
End Select
End If
End If
End While
mark.ClassificationDetail.Add(detail)
End Sub
Private Sub ReadMarkRecordDetails(r As XmlReader, ByRef mark As Mark)
While r.Read()
If r.IsStartElement() Then
If r.NodeType = XmlNodeType.Element Then
If r.Name = "BasicRecord" Then
ReadMarkRecord(r.ReadSubtree(), mark)
End If
End If
End If
End While
End Sub
Private Sub ReadMarkRecord(r As XmlReader, ByRef mark As Mark)
Dim detail As New MarkRecordDetail()
While r.Read()
If r.IsStartElement() Then
If r.NodeType = XmlNodeType.Element Then
Select Case r.Name
Case "RecordIdentifier"
detail.RecordIdentifier = r.ReadInnerXml()
Case "BasicRecordKind"
detail.BasicRecordKind = r.ReadInnerXml()
Case "RecordCurrentStatusCode"
detail.RecordCurrentStatusCode = r.ReadInnerXml()
Case "RecordCurrentStatusDate"
detail.RecordCurrentStatusDate = r.ReadInnerXml()
Case "de:RecordProcedureIncomplete"
detail.RecordProcedureIncomplete = True
End Select
End If
End If
End While
mark.MarkRecordDetails.Add(detail)
End Sub
#End Region
End Class