Проверьте, нет ли корневого элемента при использовании XDocument.Parse? - PullRequest
1 голос
/ 31 января 2011

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

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

С уважением.

1 Ответ

0 голосов
/ 31 января 2011

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

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

...