Как проверить XmlDeclaration в XmlDocument C #

Каков более эффективный способ проверки XmlDocument для узла XmlDeclaration?

6
задан adamwtiko 19 August 2010 в 09:07
поделиться

2 ответа

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

XmlDeclaration declaration = doc.ChildNodes
                                .OfType<XmlDeclaration>()
                                .FirstOrDefault();

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

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

8
ответ дан 8 December 2019 в 12:57
поделиться

Для проверки наличия:

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

Для получения, если есть:

XmlDeclaration dec = doc.FirstChild as XmlDeclaration;

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

10
ответ дан 8 December 2019 в 12:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: