如何在C#的XmlDocument中检查XmlDeclaration

7
什么是检查XmlDocument中XmlDeclaration节点的更有效的方法?
2个回答

12

检查它是否有一个:

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

如果它有一个,则可以通过以下方式获取:

XmlDeclaration dec = doc.FirstChild as XmlDeclaration;

请记住,在XML声明之前不允许有任何内容(除了BOM,但这不被视为内容,而是流中的编码工件,因此不会有相应的节点)。


10

你希望获得什么样的“效率”?表达效率还是执行时间效率?以下是一个 LINQ 查询,可以快速找到声明:

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

我强烈怀疑这将足够高效。有可能你可以仅测试第一个子节点是否为XmlDeclaration… 我认为在之前不会出现其他任何情况。

如果有可能使用LINQ to XML,那么就更容易了——你只需要使用XDocument.Declaration属性。


你记得没错,声明不能有任何东西 - 包括空格 - 在它之前,这样可以在表达式和执行方面提高效率。 - Jon Hanna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接