如何使用DTD引用生成linq到xml信息集?

时间:2009-10-19 14:50:02

标签: linq-to-xml

我需要生成一个xml信息集,但信息集需要包含对客户端DTD的引用。期望的out需要包含此DTD引用

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

此引用直接位于xml声明中。 XProcessingInstruction或XDeclaration都不能完成这项工作,我还需要使用另一种类型吗?

2 个答案:

答案 0 :(得分: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 :(得分: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));
);