Можно ли преобразовать строку XML в JSON в ColdFusion Fusion 8 - PullRequest
3 голосов
/ 23 мая 2011

Я нахожусь в ситуации, когда я получаю запрос, содержащий строку XML.Я должен преобразовать его в json.

Я написал небольшую CF-функцию, которая просматривает / анализирует XML и удобно преобразует его в json.Теперь проблема в том, что схема XML была изменена, что вынуждает меня переписать функцию CF в соответствии с новой схемой.

Есть ли более лучший / общий способ преобразования XML в json?(хотя с использованием ColdFusion!)

Ответы [ 2 ]

6 голосов
/ 23 мая 2011

Существует XSLTJSON .

Загрузите таблицу стилей XSLT и используйте ее с функцией XmlTransform() ColdFusion .

<cfset xmlDoc  = XmlParse(yourXmlString, true)>

<cfset params  = StructNew()>
<cfset params["any-param"] = "you wish to pass to the XSL processor">

<cfset jsonStr = XmlTransform(xmlDoc, "xml-to-json.xsl", params)>
1 голос
/ 06 февраля 2012

Сегодня все заработало, пришлось импортировать текущие саксонские библиотеки и написать небольшой вспомогательный файл 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();
}
...