我有使用XSL格式化的XML文件。他们在IE上看起来很棒。
现在我如何使用Flex(而非AIR)执行相同的操作?我想使用像TextArea这样的东西而不是数据网格。
感谢。
答案 0 :(得分:0)
我想我可以使用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);
}
}
感谢。
答案 1 :(得分:0)
答案 2 :(得分:0)
下面是一个示例,这里重要的是下面的行。 我们应该使用 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();
}