powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / XML в дотнет
12 сообщений из 12, страница 1 из 1
XML в дотнет
    #33629791
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как получить результат в string после преобразования через xslt??

Нужно ручками обрезать кой-чего

Вот код

XslTransform xslTran = new XslTransform();
xslTran.Load(Context.Server.MapPath(@"\SMT\XSLT\transform.xslt"));
this.Response.Clear();
this.Response.Buffer=true;
System.IO.StringWriter swr = new System.IO.StringWriter();

xslTran.Transform(xml, null, swr);

А дальше что делать? Как получить стринг из Writer'a?

Меня просто бесит дотнетовская модель XML. Всё есть кроме самого необходимого. И в МСДН ничего по этому поводу.
...
Рейтинг: 0 / 0
XML в дотнет
    #33629797
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно говоря, проблема в том, что transform засовывает в результат хидер, который мне совершенно не нужен
...
Рейтинг: 0 / 0
XML в дотнет
    #33630128
leo Resh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что за хидер Вас смущает, если не секрет?
...
Рейтинг: 0 / 0
XML в дотнет
    #33630148
leo Resh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а строку получить просто:
Код: plaintext
1.
2.
swr.Flush();
string yourString = swr.ToString();
...
Рейтинг: 0 / 0
XML в дотнет
    #33630170
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хидер смущает тем, что он имеет энкодинг утф-8 и Эксель свой хмл не понимает
...
Рейтинг: 0 / 0
XML в дотнет
    #33630184
leo Resh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Random_GoodmanХидер смущает тем, что он имеет энкодинг утф-8 и Эксель свой хмл не понимает
Тогда, может, правильный эенкодинг ему ставить? Если устраивает - напишу пример - как.
...
Рейтинг: 0 / 0
XML в дотнет
    #33630191
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был бы очень благодарен; проблема в том, что у оригинального ХМЛ-файла ексель энкодинга вообще нет. А этот ХМЛ Эксель просто запихивает в первую ячейку и все.
...
Рейтинг: 0 / 0
XML в дотнет
    #33630254
leo Resh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
// считаем, что XmlDoc - это уже имеющийся объект типа XmlDocument
XPathNavigator myNav = XmlDoc.CreateNavigator();

string xslFile = "someFile.xsl"; // имя файл с XSLT
XslTransform xslt = new XslTransform();
xslt.Load(xslFile);

MemoryStream mStrm = new MemoryStream();
// делаем StreamWriter с енкодингом win- 1251  (к примеру) 
StreamWriter stw = new StreamWriter(mStrm,System.Text.Encoding.GetEncoding( 1251 ));

// делаем трансформацию
xslt.Transform(myNav,null,stw,(XmlResolver)null);
stw.Flush();
// сливаем данные из StreamWriter в байтовый массив
byte [] bOut = mStrm.ToArray();
			
// делаем Encoding для кодировки win- 1251  
System.Text.Encoding win1251 = System.Text.Encoding.GetEncoding( 1251 );

// строим массив символов (char) при помощи Encoding 
char[] asciiChars = new char[win1251.GetCharCount(bOut,  0 , bOut.Length)];
// заполняем массив символов (char) из результата трансформации при помощи Encoding :
win1251.GetChars(bOut,  0 , bOut.Length, asciiChars,  0 );

/*
ну, строчку получить из массива char дело нехитрое. 
А поскольку форум про asp.net, рискну предположить, что
результат преобразования надо слить в браузер.. 
Тогда прямо этот массив (asciiChars) и сливаем:
*/
Response.Write(asciiChars, 0 ,asciiChars.Length);

Результат трансформации будет в кодировке windows-2151
...
Рейтинг: 0 / 0
XML в дотнет
    #33630591
leo Resh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
leo ReshРезультат трансформации будет в кодировке windows-2151
1251 конечно. Опечатался.
...
Рейтинг: 0 / 0
XML в дотнет
    #33630594
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще 2 тупых вопроса:

1) Почему

<xsl:for-each select='Sheet'>
<Worksheet>
<xsl:attribute name="ss:Name"><xsl:value-of select='Name'></xsl:value-of></xsl:attribute>
<xsl:apply-templates select="XSheets"></xsl:apply-templates>
</Worksheet>
</xsl:for-each>
</Workbook>
</xsl:template>

<xsl:template match="XSheets">434
</xsl:template>

Не работает? Зато

<xsl:for-each select='Sheet'>
<Worksheet>
<xsl:attribute name="ss:Name"><xsl:value-of select='Name'></xsl:value-of></xsl:attribute>
434
</Worksheet>
</xsl:for-each>
</Workbook>
</xsl:template>

<xsl:template match="XSheets">434
</xsl:template>

превосходно работает?


2) Как в XSLT правильно выбрать значение атрибута родительского элемента?
...
Рейтинг: 0 / 0
XML в дотнет
    #33630597
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
leo Resh leo ReshРезультат трансформации будет в кодировке windows-2151
1251 конечно. Опечатался.

Спаксиб огромное!
...
Рейтинг: 0 / 0
XML в дотнет
    #33635473
Random_Goodman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще вопросы по XML
Когда я преобразую XML через XSLT, на выходе стреам врайтера разные символы типа " заменяются на теги &qt и проч. Можно этого как-то избежать?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / XML в дотнет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]