我有一個現有的XDocument對象,我想添加一個XML文檔類型。例如:如何將文檔類型添加到XDocument?
XDocument doc = XDocument.Parse("<a>test</a>");
我可以創建使用XDocumentType:
XDocumentType doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");
但是我怎麼應用,爲現有的XDocument?
我有一個現有的XDocument對象,我想添加一個XML文檔類型。例如:如何將文檔類型添加到XDocument?
XDocument doc = XDocument.Parse("<a>test</a>");
我可以創建使用XDocumentType:
XDocumentType doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");
但是我怎麼應用,爲現有的XDocument?
您可以添加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
,但警告的是,因爲它必須是第一個,所以不應該存在其他元素。
在另一方面,以下是無效的,並會導致一個InvalidOperationException:「此操作將創建一個不正確的結構化文檔」
xDocument.Add(new XElement("Books"));
xDocument.Add(documentType); // invalid, element added before doctype
只是把它傳遞給XDocument
constructor(full example):
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>"));
這是否也適用於XDocument? MSDN鏈接指向XmlDocument。 – dtb 2009-09-11 20:49:57
@dtb:它的確如此,但我無法在MSDN上找到XDocument。另請參閱更新的代碼和InvalidOperationException。 – 2009-09-11 20:51:31
稍後您可以添加XDocumentType,但您必須確保它是「XDocument」中的第一個元素。你可以使用'xDocument.AddFirst(documentType)'來代替'xDocument.Add(documentType)'。 – 2012-05-31 08:32:21