version 1.2
This commit is contained in:
194
app/DpmaXmlParser/ParserPatents.vb
Normal file
194
app/DpmaXmlParser/ParserPatents.vb
Normal file
@@ -0,0 +1,194 @@
|
||||
Imports System.Xml
|
||||
Imports System.IO
|
||||
|
||||
Public Class ParserPatents
|
||||
Private _path As String
|
||||
Private _patents As New List(Of Patent)
|
||||
|
||||
Public Sub New()
|
||||
|
||||
End Sub
|
||||
#Region "Parse Results of Search"
|
||||
Public Function ReadPatentXMLFile(path As String) As List(Of Patent)
|
||||
Using reader As XmlReader = XmlReader.Create(path)
|
||||
While reader.Read()
|
||||
If reader.IsStartElement() Then
|
||||
If reader.Name = "PatentHitListRecord" Then
|
||||
Dim patent As Patent = CreatePatent(reader.ReadSubtree())
|
||||
_patents.Add(patent)
|
||||
End If
|
||||
End If
|
||||
End While
|
||||
End Using
|
||||
|
||||
Return _patents
|
||||
End Function
|
||||
|
||||
Private Function CreatePatent(r As XmlReader)
|
||||
Dim patent As New Patent()
|
||||
|
||||
While r.Read()
|
||||
If r.IsStartElement() Then
|
||||
If r.NodeType = XmlNodeType.Element Then
|
||||
Select Case r.Name
|
||||
Case "leading-registered-number"
|
||||
patent.LeadingRegisteredNumber = r.ReadInnerXml()
|
||||
Case "registered-number"
|
||||
patent.RegisteredNumber = r.ReadInnerXml()
|
||||
Case "type"
|
||||
patent.Type = r.ReadInnerXml()
|
||||
Case "invention-title"
|
||||
patent.Title = r.ReadInnerXml()
|
||||
Case "edition"
|
||||
patent.Edition = r.ReadInnerXml()
|
||||
Case "classification"
|
||||
patent.Classification = r.ReadInnerXml()
|
||||
Case "legalstatus"
|
||||
patent.Status = r.ReadInnerXml()
|
||||
Case "applicationDate"
|
||||
patent.ApplicationDate = r.ReadInnerXml()
|
||||
Case "publicationDate"
|
||||
patent.PublicationDate = r.ReadInnerXml()
|
||||
Case "applicant"
|
||||
patent.ApplicantsList.Add(r.ReadInnerXml())
|
||||
Case "inventor"
|
||||
patent.InventorsList.Add(r.ReadInnerXml())
|
||||
End Select
|
||||
|
||||
End If
|
||||
End If
|
||||
End While
|
||||
|
||||
Return patent
|
||||
End Function
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "Parse Results of GetRegisterInfo"
|
||||
Public Sub ReadPatentRegisterInfoXMLFile(path As String, ByRef p As Patent)
|
||||
Using reader As XmlReader = XmlReader.Create(path)
|
||||
While reader.Read()
|
||||
If reader.IsStartElement() Then
|
||||
If reader.Name = "dpma-patent-document" Then
|
||||
ReadPatentDocument(reader.ReadSubtree(), p)
|
||||
End If
|
||||
End If
|
||||
End While
|
||||
End Using
|
||||
End Sub
|
||||
|
||||
Public Sub ReadPatentDocument(r As XmlReader, ByRef p As Patent)
|
||||
While r.Read()
|
||||
If r.IsStartElement() Then
|
||||
If r.NodeType = XmlNodeType.Element Then
|
||||
Select Case r.Name
|
||||
Case "abstract"
|
||||
p.Abstract = r.ReadInnerXml()
|
||||
Case "event-data"
|
||||
ReadEvent(r.ReadSubtree(), p)
|
||||
Case "publication-reference"
|
||||
r.ReadToFollowing("document-id")
|
||||
ReadPublicationDocument(r.ReadSubtree(), p)
|
||||
Case "application-reference"
|
||||
r.ReadToFollowing("document-id")
|
||||
ReadApplicationDocument(r.ReadSubtree(), p)
|
||||
End Select
|
||||
End If
|
||||
End If
|
||||
End While
|
||||
End Sub
|
||||
|
||||
Public Sub ReadPublicationDocument(r As XmlReader, ByRef p As Patent)
|
||||
Dim pDoc As New PatentDocument
|
||||
|
||||
While r.Read()
|
||||
If r.IsStartElement() Then
|
||||
If r.NodeType = XmlNodeType.Element Then
|
||||
Select Case r.Name
|
||||
Case "country"
|
||||
pDoc.Country = r.ReadInnerXml()
|
||||
Case "doc-number"
|
||||
pDoc.DocNumber = r.ReadInnerXml()
|
||||
Case "kind"
|
||||
pDoc.Kind = r.ReadInnerXml()
|
||||
End Select
|
||||
End If
|
||||
End If
|
||||
End While
|
||||
|
||||
p.PublicationDocuments.Add(pDoc)
|
||||
End Sub
|
||||
|
||||
Public Sub ReadApplicationDocument(r As XmlReader, ByRef p As Patent)
|
||||
Dim pDoc As New PatentDocument
|
||||
|
||||
While r.Read()
|
||||
If r.IsStartElement() Then
|
||||
If r.NodeType = XmlNodeType.Element Then
|
||||
Select Case r.Name
|
||||
Case "country"
|
||||
pDoc.Country = r.ReadInnerXml()
|
||||
Case "doc-number"
|
||||
pDoc.DocNumber = r.ReadInnerXml()
|
||||
Case "date"
|
||||
pDoc.DocDate = r.ReadInnerXml()
|
||||
End Select
|
||||
End If
|
||||
End If
|
||||
End While
|
||||
|
||||
p.ApplicationDocuments.Add(pDoc)
|
||||
End Sub
|
||||
|
||||
Public Sub ReadEvent(r As XmlReader, ByRef p As Patent)
|
||||
Dim pEvent As New PatentEvent
|
||||
|
||||
While r.Read()
|
||||
If r.IsStartElement() Then
|
||||
If r.NodeType = XmlNodeType.Element Then
|
||||
Select Case r.Name
|
||||
Case "type-of-procedure"
|
||||
pEvent.Type = r.ReadInnerXml()
|
||||
Case "procedural-status"
|
||||
pEvent.Status = r.ReadInnerXml()
|
||||
Case "date-of-procedural-status"
|
||||
pEvent.StatusDate = r.ReadInnerXml()
|
||||
Case "date-of-capture"
|
||||
pEvent.CaptureDate = r.ReadInnerXml()
|
||||
Case "publication-info"
|
||||
ReadPublicationInfo(r.ReadSubtree(), pEvent)
|
||||
|
||||
End Select
|
||||
End If
|
||||
End If
|
||||
End While
|
||||
|
||||
p.Events.Add(pEvent)
|
||||
End Sub
|
||||
|
||||
Public Sub ReadPublicationInfo(r As XmlReader, ByRef pEvent As PatentEvent)
|
||||
Dim pub As New PatentPublication
|
||||
|
||||
While r.Read()
|
||||
If r.IsStartElement() Then
|
||||
If r.NodeType = XmlNodeType.Element Then
|
||||
Select Case r.Name
|
||||
Case "issue-number"
|
||||
pub.IssueNumber = r.ReadInnerXml()
|
||||
Case "year"
|
||||
pub.Year = r.ReadInnerXml()
|
||||
Case "publication-date"
|
||||
pub.PublicationDate = r.ReadInnerXml()
|
||||
Case "publication-type"
|
||||
pub.PublicationType = r.ReadInnerXml()
|
||||
Case "part"
|
||||
pub.Part = r.ReadInnerXml()
|
||||
End Select
|
||||
End If
|
||||
End If
|
||||
End While
|
||||
|
||||
pEvent.PublicationInfo = pub
|
||||
End Sub
|
||||
#End Region
|
||||
End Class
|
||||
Reference in New Issue
Block a user