如何添加文档类型,以一个XDocument?(How do I add a document typ

2019-08-05 08:45发布

我有一个现有的XDocument对象,我想一个XML文档类型添加到。 例如:

XDocument doc = XDocument.Parse("<a>test</a>");

我可以创建使用XDocumentType:

XDocumentType doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");

但我怎么应用,为现有的XDocument?

Answer 1:

您可以在添加XDocumentType到现有XDocument ,但它必须是第一个元素加入。 围绕这个文档是模糊的。

由于为吉荣指出使用的方便的方法AddFirst在评论中。 这种方法允许你写下面的代码,它显示了如何添加XDocumentTypeXDocument已经要素:

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


Answer 2:

只要将其传递给XDocument构造函数 ( 完整的例子 ):

XDocument doc = new XDocument(
    new XDocumentType("a", "-//TEST//", "test.dtd", ""),
    new XElement("a", "test")
);

或使用XDocument.Add (该XDocumentType具有根元素之前加入):

XDocument doc = new XDocument();
doc.Add(new XDocumentType("a", "-//TEST//", "test.dtd", ""));
doc.Add(XElement.Parse("<a>test</a>"));


文章来源: How do I add a document type to an XDocument?