XmlReader: есть ли способ найти первого ребенка и следующего брата? - PullRequest
1 голос
/ 12 ноября 2011

Я портирую код, который использует XmlDocument. XmlNode имеет FirstChild и свойство NextSibling. Используя XmlReader, есть ли способ разбора до тех пор, пока первый дочерний элемент или следующий брат или сестра не будут проанализированы к произвольному элементу в XML?

Ответы [ 2 ]

1 голос
/ 12 ноября 2011

С XmlRreader вы работаете по другой схеме. Вы всегда являетесь на каком-то текущем узле, и вы переключаетесь на следующий. Для текущего узла вы можете спросить IsEmptyElement (который говорит, имеет ли тег форму <something attr=value/>. Если элемент пуст, очевидно, у вас нет дочерних элементов.

Рассмотрим случай, когда IsEmptyElement ложно, теперь у вас есть что-то вроде <something> <maybechild/> </something>. Вы можете сказать ReadStartElement, что приведет вас к следующей позиции. Для следующей позиции вы проверяете IsStartElement. Если это правда, у вас есть ребенок, и вы на это. Если нет, то вы на </something>, а детей нет.

Еще немного документации: http://msdn.microsoft.com/en-us/library/t9bfea29.aspx.

0 голосов
/ 12 ноября 2011

Создайте XPathDocument и создайте XPathNavigator, используя CreateNavigator. У него есть методы (как следует из названия) для навигации по XML. Эквивалентными методами являются MoveToFirstChild и MoveToNext.

...