240 lines
9.0 KiB
VB.net
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
|