xml -> html средствами с#
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



xml -> html средствами с# Expand / Collapse
Автор
Сообщение
09.06.2002 19:33
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 19.04.2004 11:54
Сообщ.: 61, Visits: 672
Есть xml-файл и соответствующий ему xsl-файл.
Необходимо средствами С# получить в строковую переменную
результат сведения xml- и xsl-файлов.
На VBScript этого можно добиться методом transformNode объекта MSXML.DOMDocument :

sHTML = docXML.transformNode( docXSL )

Как того же добиться на C#?

Пробовал использовать объкт XslTransformation таким образом:

XmlDocument doc = new XmlDocument();

string xmlFile = Server.MapPath( "1.xml" );

doc.Load( xmlFile);

XslTransform xslt = new XslTransform();

string xslFile = Server.MapPath( "1.xsl" );

xslt.Load( xslFile );

DocumentNavigator nav = new DocumentNavigator(doc);

XmlReader xmlReader = xslt.Transform( nav, null );

Response.Write( Server.HtmlEncode( xmlReader.ReadInnerXml() );

...
но неизменно получаю пустую строку.
Если же использую метод Transform с другой сигнатурой

а именно:

public void Transform(
XmlNavigator input,
NSParamList args,
TextWriter output
);

то всё в порядке, но чтобы присвоить получающийся html-код строковой переменной приходится предварительно сохранить результат в файл, что совсем даже не нужно!

Что я не так делаю в первом случае?
Сообщ. #752395
25.11.2002 20:43
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 03.12.2002 6:34
Сообщ.: 4, Visits: 45
using System.Xml;
using System.Xml.Xsl;
using System.Xml.XPath;
using System.IO;
using System;

namespace Foo{
class Bar
{
static void Main()
{

XmlDocument d = new XmlDocument();
d.Load( "example.xml");
XslTransform t = new XslTransform();
t.Load( "example.xsl" );
XPathNavigator v = d.DocumentElement.CreateNavigator();
MemoryStream s = new MemoryStream();
s.Flush(); t.Transform(v, null, s);
if (s.CanRead){
try {
s.Seek(0, SeekOrigin.Begin);} catch( Exception e){Console.Write(e.ToString());}
string z = ""; int i;
for (i = 0; (i = s.ReadByte() )!= -1; i++){
z += (char )i;
}
Console.WriteLine("{0}", z);
}

}
}
}
Сообщ. #767725
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 1:30