Как отобразить документ XML в элементе управления веб-браузера .Net? - PullRequest
1 голос
/ 17 февраля 2009

У меня есть документ XML и файл CSS, который идет с ним, который включает стиль форматирования страницы (оба экспортированы из Adobe Framemaker). Я хотел бы импортировать эти данные и отображать части документа XML в элементе управления веб-браузера с помощью Windows Forms или WPF. Мне не ясно, как заставить все это работать вместе.

Любые предложения будут полезны, спасибо.

Ответы [ 4 ]

3 голосов
/ 13 октября 2010
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;
}
3 голосов
/ 17 февраля 2009

Подход, который я выбрал, состоял в том, чтобы получить перевод xslt, который отформатирует необработанный xml в html-кодированный контент для браузера. Поиск в Google "xml pretty print" найдет для вас готовое к работе преобразование xslt.

Используйте элемент управления XML, чтобы сделать все остальное. Дайте ему свой файл xslt, и xml, и он позаботится о преобразовании xml.

0 голосов
/ 19 июня 2009

Чтобы сделать это в памяти, измените конец примера Nir на что-то вроде этого:

StringBuilder sb = new StringBuilder(2500);
XmlWriterSettings settings = new XmlWriterSettings();
XmlWriter dest = XmlWriter.Create(sb, settings);
xslt.Transform(source, dest);;
MessageBox.Show(sb.ToString());
0 голосов
/ 18 февраля 2009

Вы не можете использовать XML с CSS, вы можете использовать только CSS с HTML (или XHTML).

Если XML-файл XHTML, вам нужно добавить ссылку на CSS внутри элементов head:

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

Если файл XML не является XHTML, вам необходимо преобразовать его в HTML (и затем добавить ссылку на CSS).

Как сказал Карим, вы можете использовать Google, чтобы найти соответствующий код XSLT, вот код, который мне нужно использовать XSLT в 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();

Вы можете открыть файл по адресу "htmlFilePath" в элементе управления веб-браузера.

...