2010-08-19 18 views

回答

6

你以後有什麼樣的「效率」?表達的效率,還是執行時的效率?這裏有一個LINQ查詢其很快發現聲明:

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

我強烈懷疑,這將是足夠的效率。有可能您可以只是測試第一個子節點是否爲XmlDeclaration ...我不是認爲其他任何東西都可以在它之前出現。

如果有任何使用LINQ to XML的可能性,那麼它變得更容易 - 您只需使用XDocument.Declaration屬性。

+0

你記得是對的,聲明在它之前不能包含任何東西 - 包括空格 - 允許在表達和執行中提高效率。 – 2010-08-19 22:41:19

8

要檢查它有一個:

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

爲了得到它,如果它有一個:

XmlDeclaration dec = doc.FirstChild as XmlDeclaration; 

請記住,沒有內容的允許之前,XML聲明(除非有BOM,這不被視爲內容,而是流中的編碼假象,所以不會有相應的節點)。