2009-02-17 9 views
1

J'ai un document XML et un fichier CSS qui va avec, qui comprend le style de mise en page (les deux exportés à partir d'Adobe Framemaker). Je voudrais importer ces données et afficher des parties du document XML dans un contrôle de navigateur Web avec Windows Forms ou WPF. Ce n'est pas clair pour moi comment faire tout ce travail ensemble.Comment afficher un document XML dans un contrôle de navigateur Web .Net?

Toutes les suggestions seraient utiles, merci.

Répondre

3

L'approche que j'ai prise était d'obtenir une traduction xslt qui formatera le XML brut en contenu codé html pour le navigateur. Une recherche google pour "xml pretty print" vous trouverez une transformation xslt prête à l'emploi.

Utilisez le contrôle XML pour faire le reste. Donnez-lui votre fichier xslt, et le xml et il se chargera de transformer le xml.

+1

Une recherche google pour « imprimer assez xml » vous trouverez un xslt transformer prêt à Mon google-fu doit être faible. La recherche de cela me fait remonter un certain nombre d'extraits de code Perl et Java impairs montrant du XML "joli" mais pas du code HTML codé en HTML. Pourriez-vous avoir un lien plus spécifique? Merci. –

+0

Nevermind, a quelque chose qui utilise Prototype. –

-2

Vous ne pouvez pas utiliser XML avec CSS, vous pouvez uniquement utiliser CSS avec HTML (ou XHTML).

Si le fichier XML est XHTML vous devez ajouter une référence à la CSS à l'intérieur des éléments de tête:

<link href="mycss.css" type="text/css" rel="stylesheet" /> 

Si le fichier XML est XHTML vous de ne pas transformer en HTML (et que d'ajouter la lien vers le css).

Comme kareem a dit que vous pouvez utiliser Google pour trouver le code XSLT approprié, est un code ici, je dois utiliser XSLT en C#:

XmlDocument source = new XmlDocument(); 
source.Load(xmlFilePath); 
XslCompiledTransform xslt = new XslCompiledTransform(); 
xslt.Load(xsltFilePath)); 
XmlWriterSettings settings = new XmlWriterSettings(); 
XmlWriter dest = XmlWriter.Create(htmlFilePath, settings); 
xslt.Transform(source, dest); 
dest.Flush(); 
dest.Dispose(); 

Vous pouvez que d'ouvrir le fichier à « htmlFilePath » dans une toile contrôle du navigateur.

+2

Vous pouvez utiliser un CSS avec un fichier XML ... (http://www.w3schools.com/Xml/xml_display.asp) – Russell

0

Pour le faire en mémoire changer la fin de l'exemple de Nir faire quelque chose comme ceci:

StringBuilder sb = new StringBuilder(2500); 
XmlWriterSettings settings = new XmlWriterSettings(); 
XmlWriter dest = XmlWriter.Create(sb, settings); 
xslt.Transform(source, dest);; 
MessageBox.Show(sb.ToString()); 
3
webBrowser1.NavigateToStream(parseXmlToHtml(report)); 

private Stream parseXmlToHtml(string xmlDocument) 
{   
    XmlDocument dat = new XmlDocument(); 
    XslCompiledTransform xslt = new XslCompiledTransform(); 

    MemoryStream outputStream = new MemoryStream(); 
    XmlTextWriter writer = new XmlTextWriter (outputStream, System.Text.Encoding.ASCII); 

    dat.LoadXml(xmlDocument); // or dat.Load("c:\\dat.xml"); 
    xslt.Load("c:\\MonthlyLate.xslt"); 
    xslt.Transform(dat, writer); 

    outputStream.Position = 0; 

    return outputStream; 
} 
Questions connexes