2010-08-19 30 views

Trả lời

6

Bạn sắp xếp loại "hiệu quả" nào? Hiệu quả của biểu thức, hoặc hiệu quả tại thời gian thực hiện? Dưới đây là truy vấn LINQ tìm thấy tuyên bố khá nhanh:

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

Tôi nghi ngờ rằng sẽ đủ hiệu quả. Có thể bạn chỉ có thể chỉ kiểm tra xem nút con đầu tiên có là XmlDeclaration ... Tôi không nghĩ rằng bất kỳ điều gì khác có thể xảy ra trước đó.

Nếu có khả năng sử dụng LINQ to XML thay vào đó, thì việc này trở nên dễ dàng hơn - bạn chỉ cần sử dụng thuộc tính XDocument.Declaration.

+0

bạn đang nhớ đúng, tuyên bố không thể có bất kỳ thứ gì - bao gồm khoảng trắng - trước khoảng trắng, cho phép hiệu quả cao hơn trong cả biểu thức và thực thi. –

8

Để kiểm tra xem nó có một:

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

Để có được nó nếu nó có một:

XmlDeclaration dec = doc.FirstChild as XmlDeclaration; 

Hãy nhớ rằng không có nội dung cho phép trước khi khai báo XML (trừ một BOM, mà không được coi là nội dung, nhưng một vật phẩm mã hóa trong luồng, do đó sẽ không có nút tương ứng).

Các vấn đề liên quan