apache-flex 在控件上显示XSL格式的XML

vh0rcniy  于 2022-11-01  发布在  Apache
关注(0)|答案(3)|浏览(153)

我有用XSL格式化的XML文件。它们在IE上看起来很棒。
现在我如何用Flex(而不是AIR)做同样的事情呢?我想使用类似TextArea的东西,而不是数据网格。

  • 谢谢-谢谢
vwoqyblh

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);
  }
}
  • 谢谢-谢谢
nimxete2

nimxete22#

我找到了解决办法。
我可以在Flex中使用下面的组件显示应用了XSL的XML,而不是使用弹出窗口(例如,使用IE):
http://code.google.com/p/flex-iframe/

6tqwzwtp

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();
                }

相关问题