如何在XmlDocument C#中检查XmlDeclaration

ada*_*iko 6 c# xml

检查XmlDclaration节点的XmlDocument的更有效方法是什么?

Jon*_*nna 10

检查它有一个:

bool hasDec = doc.FirstChild.NodeType == XmlNodeType.XmlDeclaration;
Run Code Online (Sandbox Code Playgroud)

要获得它,如果它有一个:

XmlDeclaration dec = doc.FirstChild as XmlDeclaration;
Run Code Online (Sandbox Code Playgroud)

请记住,在XML声明之前没有允许的内容(禁止BOM,这不是内容,而是流中的编码假象,因此不会有相应的节点).


Jon*_*eet 8

你追求什么样的"效率"?表达效率或执行时的效率?这是一个LINQ查询,可以很快找到声明:

XmlDeclaration declaration = doc.ChildNodes
                                .OfType<XmlDeclaration>()
                                .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我强烈怀疑这将足够有效.您可能只是测试第一个子节点是否是XmlDeclaration......我认为其他任何事物都不会出现在它之前.

如果有可能使用LINQ to XML,那么它变得更加容易 - 您只需使用该XDocument.Declaration属性.