我有用XSL格式化的XML文件。它们在IE上看起来很棒。现在我如何用Flex(而不是AIR)做同样的事情呢?我想使用类似TextArea的东西,而不是数据网格。
vwoqyblh1#
我想我可以使用JavaScript来进行转换。因此,我的Flex应用程序将XML和XSL URL传递给JavaScript。JavaScript进行XML-XSL转换。它应该将转换后的HTML传递回Flex,这样我的Flex应用程序就可以弹出一个TextArea(或类似的)来显示它。我想我已经接近了。但是现在的问题是,转换后的HTML似乎是空的。有什么想法吗?
function loadXMLDoc(dname) { if (window.XMLHttpRequest) { xhttp=new XMLHttpRequest(); } else { xhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xhttp.open("GET",dname,false); xhttp.send(""); return xhttp.responseXML; } function displayResult(xmlURL, xslURL) { //prepare xml and xsl xml=loadXMLDoc(xmlURL); xsl=loadXMLDoc(xslURL); //get flash var isIE = navigator.appName.indexOf("Microsoft") != -1; var flashName = "index"; var flashObject = (isIE) ? window[flashName] : document[flashName]; // code for IE if (window.ActiveXObject) { ex=xml.transformNode(xsl); flashObject.GetTransformedHTML(ex); } // code for Mozilla, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument) { xsltProcessor=new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); resultDocument = xsltProcessor.transformToFragment(xml,document); document.getElementById("example").appendChild(resultDocument); } }
nimxete22#
我找到了解决办法。我可以在Flex中使用下面的组件显示应用了XSL的XML,而不是使用弹出窗口(例如,使用IE):http://code.google.com/p/flex-iframe/
6tqwzwtp3#
下面是一个例子,这里重要的是下面这一行。我们应该使用**toXMLString()**函数:
CBSPopup.showNotification("stavka : " + stavka.toXMLString());
其余的代码:
if(children.length() > 0){ var idPravila : String = _dataprovider.@IdPravila[0]; for each(var child:XML in children ) { var stavka : XML = <entity name="PopustBenzinskeStanice" SCCode={child.@SCCode[0]} SubcompanyName={child.@SubcompanyName[0]} SCCodeMedjusloj={child.@SCCodeMedjusloj[0]} IdPravila={idPravila} />; CBSPopup.showNotification("stavka : " + stavka.toXMLString()); _dataprovider.appendChild(stavka); } //if (poslovneJediniceGrid.dataProvider == null) { poslovneJediniceGrid.DataProvider = _dataprovider.entity.(attribute("name") == "PopustBenzinskeStanice"); //} poslovneJediniceGrid.dataProvider.refresh(); }
3条答案
按热度按时间vwoqyblh1#
我想我可以使用JavaScript来进行转换。因此,我的Flex应用程序将XML和XSL URL传递给JavaScript。JavaScript进行XML-XSL转换。它应该将转换后的HTML传递回Flex,这样我的Flex应用程序就可以弹出一个TextArea(或类似的)来显示它。
我想我已经接近了。但是现在的问题是,转换后的HTML似乎是空的。有什么想法吗?
nimxete22#
我找到了解决办法。
我可以在Flex中使用下面的组件显示应用了XSL的XML,而不是使用弹出窗口(例如,使用IE):
http://code.google.com/p/flex-iframe/
6tqwzwtp3#
下面是一个例子,这里重要的是下面这一行。我们应该使用**toXMLString()**函数:
其余的代码: