在Delphi中用XSLT转换xml文件格式
Uses XMLDoc, XMLIntf; function Transform(XMLContent : string; XSLContent : string) : WideString; var XML : IXMLDocument; XSL : IXMLDocument; begin XML := LoadXMLData(XMLContent); XSL := LoadXMLData(XSLContent); XML.DocumentElement.TransformNode(XSL.DocumentElement, Result) end;
试了一下,确实好用,不过对xml文件格式的要求很严格。
- 补充:如果上面那个办法抽风了,下面有一个更严谨的方法。
uses MSXML2_TLB; function XMLTransform(const xmlFile: string; const xslFile: string): WideString; var XMLDoc, XSLDoc: IXMLDOMDocument2; xslTemplate : IXSLTemplate; xslProcessor : IXSLProcessor; begin XMLDoc := CoDOMDocument40.Create; XMLDoc.async := False; XMLDoc.load(xmlFile); XSLDoc := CoFreeThreadedDOMDocument40.Create; XSLDoc.async := False; XSLDoc.load(xslFile); xslTemplate := CoXSLTemplate40.Create; xslTemplate.stylesheet := XSLDoc; xslProcessor := xslTemplate.createProcessor; xslProcessor.input := XMLDoc; xslProcessor.transform; result := xslProcessor.output; end;
别问我为什么这么写,我也是找了一个下午才发现这样好用。万恶的delphi,出错的时候真想踹他一脚,如果能踹着的话。。。
- 另外有一篇详细说明:
http://blog.csdn.net/yethyeth/archive/2006/09/06/1187023.aspx
都是英文,好长,有时间再看。
-------------------------------------------------
本博客中凡是未标明【转】字样的文章均为原创,作者保留版权,转载请务必保留原文地址。
博客地址:http://xuxn.cnblogs.com
如有问题请联系:xuxin1123@gmail.com
本博客中凡是未标明【转】字样的文章均为原创,作者保留版权,转载请务必保留原文地址。
博客地址:http://xuxn.cnblogs.com
如有问题请联系:xuxin1123@gmail.com