2009-10-19 7 views
2

Je dois générer un infoset xml mais l'infoset doit contenir une référence à la DTD d'un client. La sortie désirée doit contenir cette référence DTDComment générer un infoset linq to xml avec une référence DTD?

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

Cette référence se trouve directement dans benath la déclaration xml. Ni XProcessingInstruction ni XDeclaration ne font le travail, y a-t-il un autre type que je dois utiliser?

Répondre

2

vous devez ajouter votre dtd en utilisant un objet XDocumentType. Voir here pour plus d'informations. Il convient de noter que xlinq a un traitement assez limité pour les DTD, cependant (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

Pour ce fragment XML.

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

Nous ferions:

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)); 
);