2010-08-19 3 views

ответ

6

Какая «эффективность» вы после? Эффективность выражения или эффективность во время выполнения? Вот запрос LINQ, который находит объявление довольно быстро:

Я сильно подозреваю, что будет достаточно эффективно. Возможно, вы могли бы просто проверить, был ли первый дочерний узел XmlDeclaration ... Я не думаю что-нибудь еще может прийти перед ним.

Если есть возможность использовать LINQ to XML, то это становится еще проще - вы просто используете свойство XDocument.Declaration.

+0

Вы помните правильно, декларация не может иметь ничего - включая пробелы - перед этим, что позволяет повысить эффективность как в выражении, так и при выполнении. –

8

Чтобы проверить, имеет один:

bool hasDec = doc.FirstChild.NodeType == XmlNodeType.XmlDeclaration; 

Чтобы получить его, если он есть:

XmlDeclaration dec = doc.FirstChild as XmlDeclaration; 

Помните, что нет никакого содержания не допускаются до объявления XML (запрещающего спецификацию, которая не считается содержимым, но артефактом кодирования в потоке, поэтому не будет соответствующего узла).

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