2011-01-31 10 views
1

Хотелось бы услышать, как вы проверяете, отсутствует ли элемент «Root» при использовании XDocument.Parse(); В настоящее время я использую try-catch, чтобы поймать ошибку, но я хотел бы услышать, если у кого-то из вас есть более умный способ сделать это - лично я хотел бы избежать ошибок, а не кешировать их.Проверьте, отсутствует ли элемент «Корневой элемент» при использовании XDocument.Parse?

Я должен уточнить, строка, которую я обрабатываю, возвращается из WebClient.DownloadString (...) ;, и поэтому я НЕ создаю сам XML.

С уважением.

+0

Есть ли причина, по которой вам нужно иметь возможность обрабатывать одну синтаксическую ошибку по-другому от другой? –

+0

Нет, нет, я только пытаюсь обострить свой способ кодирования, слушая, что говорят мои коллеги-разработчики. –

ответ

0

try/catch обработка исключений - совершенно нормальный и обычный стиль программирования в .NET framework. И XML имеет строгие правила синтаксиса, которые синтаксический анализатор XML проверяет при разборе разметки, поэтому вам нужно быть готовым к обработке любой ошибки синтаксического анализа, try/catch - правильный инструмент для этого.

Вы не сказали, управляете ли вы созданием аргумента строки, который вы передаете XDocument.Parse. Если вы не контролируете его, вы не можете избежать ошибок. Если вы контролируете, то убедитесь, что вы не используете конкатенацию строк или StringBuilders для построения строк с помощью XML, вместо этого убедитесь, что вы используете XML-API, например XmlWriter, таким образом вы получите хорошо сформированную разметку XML или вы получите какую-либо ошибку при построении разметки, а не при разборе. Но любые ошибки, вызванные XmlWriter, также лучше всего обрабатываются с помощью try/catch.

+0

Привет, Мартин Хоннен, спасибо за ваш ответ. Что касается нормального и обычного, я прекрасно это понимаю, я только пытался выяснить, были ли альтернативные способы сделать это. На ваш вопрос нет, я не контролирую создание строки, которую я предоставляю XDocument.Parse(). –

Смежные вопросы