Se puede añadir una XDocumentType
a un XDocument
existente, pero debe ser el primer elemento agregado. La documentación que lo rodea es vaga.
Gracias a Jeroen por señalar el enfoque conveniente de usar AddFirst
en los comentarios. Este enfoque le permite escribir el código siguiente, que muestra cómo añadir el XDocumentType
después de la XDocument
ya tiene elementos:
var doc = XDocument.Parse("<a>test</a>");
var doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");
doc.AddFirst(doctype);
Alternativamente, se puede utilizar el método Add
añadir una XDocumentType
a un XDocument
existente, pero el La advertencia es que no debe existir ningún otro elemento, ya que tiene que ser el primero.
XDocument xDocument = new XDocument();
XDocumentType documentType = new XDocumentType("Books", null, "Books.dtd", null);
xDocument.Add(documentType);
Por otro lado, el siguiente es inválido y se traduciría en una InvalidOperationException: "Esta operación crearía un documento estructurado de forma incorrecta."
xDocument.Add(new XElement("Books"));
xDocument.Add(documentType); // invalid, element added before doctype
¿Esto también se aplica para XDocument? El enlace de MSDN apunta a XmlDocument. – dtb
@dtb: lo hace, pero no pude encontrarlo en MSDN para XDocument. También vea el código actualizado y InvalidOperationException. –
Puede agregar un XDocumentType más tarde, pero debe asegurarse de que sea el primer elemento en 'XDocument'. Puede hacerlo utilizando 'xDocument.AddFirst (documentType)' en lugar de 'xDocument.Add (documentType)'. –