Вы можете добавить 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
Это также относится к XDocument? Ссылка MSDN указывает на XmlDocument. – dtb
@dtb: это так, но я не мог найти его в MSDN для XDocument. Также см. Обновленный код и InvalidOperationException. –
Вы можете добавить XDocumentType позже, но вы должны убедиться, что это первый элемент в 'XDocument'. Вы можете сделать это, используя 'xDocument.AddFirst (documentType)' вместо 'xDocument.Add (documentType) '. –