![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
transformNodeToObject и кодировка XML
RWolf © (2011-02-02 16:44:00)Задача — получить отформатированный отступами файл XML в нужной кодировке. Кодировка должна быть прописана в заголовке XML.
Решаю следующим образом:
procedure SaveIndentedXML(doc:IXMLDOMDocument2);
const
xslText=
'<xsl:stylesheet xmlns:xsl=" http://www.w3.org/1999/XSL/Transform" version="1.0">'#13#10+
' <xsl:output method="xml" indent="yes"/>'#13#10+
' <xsl:template match="@* | node()">'#13#10+
' <xsl:copy>'#13#10+
' <xsl:apply-templates select="@* | node()"/>'#13#10+
' </xsl:copy>'#13#10+
' </xsl:template>'#13#10+
'</xsl:stylesheet>';
var
xsl,res:IXMLDOMDocument2;
begin
xsl:=CoDOMDocument30.Create;
xsl.async:=False;
xsl.loadXML(xslText);
res:=CoDOMDocument30.Create;
res.async:=False;
res.validateOnParse:=True;
doc.transformNodeToObject(xsl,res);
res.save('res.xml');
end;
Если применить transformNodeToObject к XML-документу, то получаем результат в кодировке UTF-16; можно ли заставить его сохраняться в другой кодировке?
Манипуляции с копированием XML в текстовую строку с последущей конвертацией и обратным присвоением не подходят, т.к. портят processing instructions < ? ... ? >.
RWolf (2011-02-02 17:36:00) [1]
> Медвежонок ХМЛ © (02.02.11 17:24) [1]
Спасибо.
Медвежонок ХМЛ (2011-02-02 17:24:00) [2]<xsl:output ..... encoding="UTF-8" ....../>
http://www.w3schools.com/xsl/el_output.asp