Bạn có thể thêm một XDocumentType
để hiện có XDocument
, nhưng nó phải là phần tử đầu tiên được thêm vào. Các tài liệu xung quanh điều này là mơ hồ.
Nhờ Jeroen để chỉ ra cách tiếp cận thuận tiện khi sử dụng AddFirst
trong các nhận xét. Cách tiếp cận này cho phép bạn viết đoạn code sau, trong đó cho thấy làm thế nào để thêm XDocumentType
sau XDocument
đã có các yếu tố:
var doc = XDocument.Parse("<a>test</a>");
var doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");
doc.AddFirst(doctype);
Cách khác, bạn có thể sử dụng phương pháp Add
để thêm một XDocumentType
đến một hiện XDocument
, nhưng báo trước là không có yếu tố nào khác tồn tại vì nó phải là thứ nhất.
XDocument xDocument = new XDocument();
XDocumentType documentType = new XDocumentType("Books", null, "Books.dtd", null);
xDocument.Add(documentType);
Mặt khác, sau đây không hợp lệ và sẽ dẫn đến một InvalidOperationException: "Thao tác này sẽ tạo tài liệu có cấu trúc không chính xác".
xDocument.Add(new XElement("Books"));
xDocument.Add(documentType); // invalid, element added before doctype
Nguồn
2009-09-11 20:47:44
Điều này cũng áp dụng cho XDocument? Liên kết MSDN trỏ tới XmlDocument. – dtb
@dtb: nó có, nhưng tôi không thể tìm thấy nó được ghi trên MSDN cho XDocument. Ngoài ra, hãy xem mã cập nhật và InvalidOperationException. –
Bạn có thể thêm một XDocumentType sau, nhưng bạn phải chắc chắn rằng nó là phần tử đầu tiên trong 'XDocument'. Bạn có thể làm điều đó bằng cách sử dụng 'xDocument.AddFirst (documentType)' thay cho 'xDocument.Add (documentType)'. –