我有一个现有的XDocument对象,我想一个XML文档类型添加到。 例如:
XDocument doc = XDocument.Parse("<a>test</a>");
我可以创建使用XDocumentType:
XDocumentType doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");
但我怎么应用,为现有的XDocument?
我有一个现有的XDocument对象,我想一个XML文档类型添加到。 例如:
XDocument doc = XDocument.Parse("<a>test</a>");
我可以创建使用XDocumentType:
XDocumentType doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");
但我怎么应用,为现有的XDocument?
您可以在添加XDocumentType
到现有XDocument
,但它必须是第一个元素加入。 围绕这个文档是模糊的。
由于为吉荣指出使用的方便的方法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
构造函数 ( 完整的例子 ):
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>"));