Получить тег Entity из XmlNamedNodeMap - PullRequest
0 голосов
/ 31 марта 2020

У меня есть файл 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...