XmlReader - чтение текущего узла в виде строки - PullRequest
2 голосов
/ 24 октября 2008

В следующем фрагменте, используя XmlReader, когда я сталкиваюсь с элементом. Я хотел бы прочитать его как есть, включая все атрибуты и оформление пространства имен в элементе. Используя свойство oXml.Name, я могу получить только имя тега. Есть ли функция для получения самого тега?

oXml = XmlReader.Create(path, oXmlSettings)
While oXml.Read()
   Select Case oXml.NodeType
      Case XmlNodeType.Element
        'Read Element as-is
         If taglist.contains(oXml.Name)
           stringbuilder.Append(oXml.ReadOuterXml())
         End If
      Case XmlNodeType.Text
         stringbuilder.Append(oXml.Value)
   End Select
End While

Я пробовал oXml.ReadOuterXml (), но он возвращает элемент и его подконтент. Это может быть приемлемо, но как я могу перенести мой XmlReader, чтобы игнорировать последующие XmlNodeType.Text и XmlNodeType.EndElement, которые произойдут, когда будет проанализирован элемент, который я только что получил из ReadOuterXml?

ОБНОВЛЕНО: для следующего фрагмента loc1 находится в taglist, поэтому записывается с использованием ReadOuterXml, но парсеру не удается получить следующее "!" характер.

<para>
  Test blabla <loc1 href="test">complicated</loc1>!
</para>

1 Ответ

3 голосов
/ 24 октября 2008

Я не пробовал, но я не ожидал, что вам придется перематывать читатель после вызова ReadOuterXml. Я ожидаю, что процесс чтения внешнего XML будет его использовать.

Вы пробовали это?

...