2009-10-19 32 views
2

我需要生成一个xml信息集,但信息集需要包含对客户端DTD的引用。期望输出需要包含此DTD参考如何生成带有DTD引用的linq到xml信息集?

<!DOCTYPE AutoApplication SYSTEM "http://www.clientsite.com/public/DTD/autoappV1-3-level2.dtd"> 

此参考文献直接介绍了xml声明。 XProcessingInstruction或XDeclaration都不能完成这项工作,是否有另一种类型需要使用?

回答

2

您需要使用XDocumentType对象添加您的dtd。有关更多信息,请参阅here。应该指出的是,xlinq对于DTD的处理非常有限,但是(see msdn)。

some sample code ....

using System; 
using System.Linq; 
using System.Collections; 
using System.Collections.Generic; 
using System.Xml; 
using System.Xml.Linq; 
public class MainClass 
{ 
    public static void Main() 
    { 
     XDocument xDocument = new XDocument(); 
     XDocumentType documentType = new XDocumentType("Books", null, "Books.dtd", null); 
     xDocument.Add(documentType, new XElement("Books")); 
     Console.WriteLine(xDocument); 
    } 
} 
1

对于这个XML片段。

<?xml version="1.0" encoding="utf-8" ?> 
<!DOCTYPE AutoApplication SYSTEM "http://www.clientsite.com/public/DTD/autoappV1-3-level2.dtd"> 

我们会做:

XDocument xDoc = new XDocument(
    new XDeclaration("1.0", "utf-8", "yes"), 
    new XDocumentType("AutoApplication", null, "http://www.clientsite.com/public/DTD/autoappV1-3-level2.dtd", null)); 
);