2008-10-24 2 views
2

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

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(), но возвращает элемент и его subcontent. Это может быть приемлемым, но как мне ускорить XmlReader, чтобы игнорировать последующие XmlNodeType.Text и XmlNodeType.EndElement, которые произойдут, когда элемент, который я только что получил из ReadOuterXml, был проанализирован?

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

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

ответ

3

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

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

+0

Да, это очень быстро, но я считаю, что он пропускает следующее событие после EndElement. Это потому, что я уже сделал oXml.Read()? – Vincent 2008-10-24 17:10:01