Соответствие ReadEndElement с ReadStartElement при использовании XmlReader - PullRequest
1 голос
/ 19 марта 2009

Мой вопрос прост. Я использовал ReadStartElement и ReadEndElement с XmlReader в моем коде просто отлично. Вопрос (и это после просмотра MSDN), вам нужно сопоставить два?

Другими словами, заканчиваю ли я ReadEndElement для каждого ReadStartElement или есть случаи, когда вам не нужно так много вызовов ReadEndElement в вашем коде при чтении XML Envelop? У тебя были случаи, когда у меня не всегда было совпадение ReadEndElement, и чтение xml работало нормально.

Ответы [ 2 ]

3 голосов
/ 19 марта 2009

Да, я полагаю, что вам нужно соответствовать им чаще всего. Это связано с тем, что и ReadStartElement, и ReadEndElement перемещают XmlReader на следующий узел. Однако они проверяют разные вещи.

Эта неоправданно добавленная детализация в коде - только одна из причин, по которым я всегда предпочитаю перемещаться по XML, используя XPathNavigator Это удобство просто не имеет себе равных (если вы не сравните его с LINQ.)

1 голос
/ 19 марта 2009

Я не думаю, что это хорошая идея - не вставлять тогда в код. У вас могут возникнуть проблемы с некоторыми иерархиями элементов XML, в зависимости от того, какой из них вы пропустили. Может быть, только последние элементы.

Тем не менее, вместо этого я использую linq 2 xml, поэтому мне не нужно с этим сталкиваться :) Вы можете загрузить ридер в XElement.Load и работать с ним более чистым способом.

...