У меня есть файл SGM, и в его прологе есть сотни вызовов Entity. Мне нужно прочитать файл, и для каждой сущности мне нужно извлечь имя сущности (Name_1), а затем весь элемент сущности для этого имени. Который я бы положил в список словаря для использования позже.
У меня есть имя сущности, но я не знаю, как получить весь элемент сущности. Как мне это сделать?
Я использую пример кода сущности в качестве руководства для этого, но он написан в C коде, и у меня возникают проблемы с преобразованием его в vb . net
Пример SGM
<!DOCTYPE DOC PUBLIC "-//USA-DOD//DTD 7700G-AV6aD1P0//EN"[
<!ENTITY Name_1 SYSTEM "Illustrations\_StdDay.wmf" NDATA wmf>
<!ENTITY Name_2 SYSTEM "Illustrations\SA50.wmf" NDATA wmf>
<!ENTITY Name_3 SYSTEM "Illustrations\a3-3.wmf" NDATA wmf>
<!ENTITY Name_4 SYSTEM "Illustrations\pb0318.wmf" NDATA wmf>
<!NOTATION wmf SYSTEM "wmf">
<!NOTATION jpg SYSTEM "jpg">
<!NOTATION png SYSTEM "png">
<!NOTATION vsd SYSTEM "vsd"> ]>
<docfm paranumbers="1">
<front numcols="2">
<idinfo>
</idinfo>
</front>
</docfm>
Код:
Private Sub btnRun_Click(sender As Object, e As EventArgs) Handles btnRun.Click
Dim doc As New XmlDocument()
'Load XML file
doc.Load(fileName)
doc.PreserveWhitespace = True
Debug.WriteLine("Display information on all entities...")
Dim nMap As XmlNamedNodeMap = doc.DocumentType.Entities
DisplayEntities(nMap)
Me.Close()
End Sub
Public Sub DisplayEntities(nMap As XmlNamedNodeMap)
Dim mpCount As Integer = nMap.Count - 1
For i As Integer = 0 To mpCount
Dim ent = CType(nMap.Item(i), XmlEntity)
Debug.WriteLine("ent ", ent.InnerText)
Debug.WriteLine("Name " + ent.Name)
Debug.WriteLine("NotationName " + ent.NotationName)
' Step 2: exit condition if the value is 3.
If i = mpCount Then
Exit For
End If
' Step 3: print the current index of the loop.
Debug.WriteLine("CURRENT FOR-INDEX: {0}", i)
Next
End Sub