Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ColdFusion Fusion 8中是否可以将XML字符串转换为JSON_Xml_Json_Coldfusion 8 - Fatal编程技术网

在ColdFusion Fusion 8中是否可以将XML字符串转换为JSON

在ColdFusion Fusion 8中是否可以将XML字符串转换为JSON,xml,json,coldfusion-8,Xml,Json,Coldfusion 8,在这种情况下,我会收到一个包含XML字符串的查询。我应该把它转换成json 我编写了一个小的CF函数,它遍历/解析XML并方便地将其转换为json。现在的问题是,XML模式已经更改,这迫使我重新编写CF函数以适应新模式 有没有更好/更通用的方法将XML转换为json?(尽管使用ColdFusion!)有 下载XSLT样式表并与ColdFusion的样式表一起使用 今天完成了这项工作,必须导入当前的Saxon LIB并编写一个小型java帮助文件 public static String tran

在这种情况下,我会收到一个包含XML字符串的查询。我应该把它转换成json

我编写了一个小的CF函数,它遍历/解析XML并方便地将其转换为json。现在的问题是,XML模式已经更改,这迫使我重新编写CF函数以适应新模式

有没有更好/更通用的方法将XML转换为json?(尽管使用ColdFusion!)

下载XSLT样式表并与ColdFusion的样式表一起使用


今天完成了这项工作,必须导入当前的Saxon LIB并编写一个小型java帮助文件

public static String transformXML(String xmlData, String xslFile) throws SaxonApiException 
{

    StringWriter sw = new StringWriter();
    XdmNode source = null;

    Processor proc = new Processor(false);
    XsltCompiler comp = proc.newXsltCompiler();
    XsltExecutable exp = comp.compile(new StreamSource(new File(xslFile)));

    try
    {
        source = proc.newDocumentBuilder().build(new StreamSource(new ByteArrayInputStream(xmlData.getBytes("UTF-8"))));
    }
    catch (UnsupportedEncodingException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Serializer out = proc.newSerializer(sw);
    //out.setOutputProperty(Serializer.Property.METHOD, "html");
    out.setOutputProperty(Serializer.Property.INDENT, "yes");
    XsltTransformer trans = exp.load();
    trans.setInitialContextNode(source);
    trans.setDestination(out);
    trans.transform();

    return sw.toString();
}

谢谢你的回复。我目前使用的是cold fusion 8,我遇到了以下错误(我使用的是XSLT v2.0):(
javax.xml.transform.TransformerConfiguration异常:javax.xml.transform.TransformerException:javax.xml.transform.TransformerException:“as”在xsl:param元素上不允许使用属性!无法创建满足请求的配置的Transformer对象。这可能是由于编译xsl text.javax.xml.transform.TransformerConfiguration异常时失败。异常:javax.xml.transform.TransformerException:javax.xml.transform.TransformerException:“as”属性在xsl:param元素上是不允许的!
@novein:Oh,XSLT似乎是2.0版,而ColdFusion(本机)是仅支持XSLT 1.0。我必须承认我没有检查它。:-\Sorry@novein:有一个XSLT 1.0样式表,您可以尝试。该函数实际上被称为
XMLTransform
而不是
XSLTransform
public static String transformXML(String xmlData, String xslFile) throws SaxonApiException 
{

    StringWriter sw = new StringWriter();
    XdmNode source = null;

    Processor proc = new Processor(false);
    XsltCompiler comp = proc.newXsltCompiler();
    XsltExecutable exp = comp.compile(new StreamSource(new File(xslFile)));

    try
    {
        source = proc.newDocumentBuilder().build(new StreamSource(new ByteArrayInputStream(xmlData.getBytes("UTF-8"))));
    }
    catch (UnsupportedEncodingException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Serializer out = proc.newSerializer(sw);
    //out.setOutputProperty(Serializer.Property.METHOD, "html");
    out.setOutputProperty(Serializer.Property.INDENT, "yes");
    XsltTransformer trans = exp.load();
    trans.setInitialContextNode(source);
    trans.setDestination(out);
    trans.transform();

    return sw.toString();
}