Вы можете добавить XDocumentType
к существующему XDocument
, но это должен быть первый добавленный элемент. Документация вокруг этого является расплывчатой.
Спасибо Jeroen за указание на удобный подход использования AddFirst
в комментариях. Этот подход позволяет вам написать следующий код, который показывает, как добавить XDocumentType
после того, как XDocument
уже имеет элементы:
var doc = XDocument.Parse("<a>test</a>");
var doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");
doc.AddFirst(doctype);
Кроме того, вы можете использовать метод Add
, чтобы добавить XDocumentType
к существующему XDocument
, но предостережение заключается в том, что никакого другого элемента не должно быть, поскольку он должен быть первым.
XDocument xDocument = new XDocument();
XDocumentType documentType = new XDocumentType("Books", null, "Books.dtd", null);
xDocument.Add(documentType);
С другой стороны, следующее недопустимо и приведет к исключению InvalidOperationException: «Эта операция приведет к созданию неправильно структурированного документа».
xDocument.Add(new XElement("Books"));
xDocument.Add(documentType); // invalid, element added before doctype