Xml Mule中的数据组织转换

Xml Mule中的数据组织转换,xml,mule,mule-studio,mule-component,dataweave,Xml,Mule,Mule Studio,Mule Component,Dataweave,我将以下内容设置为输入有效负载,并希望输出为结构良好的XML文件,如下所示:我无法控制输入有效负载。我不熟悉Mule DataWeave转换和Mule。请注意,这些只是所有名称和属性的任意值。到目前为止,我尝试使用Mule提供的pull()和map()方法,但没有成功。任何指向正确方向的指示都将不胜感激 输入: [{head={vars=[subject,instructorCode,instructoreName]},results={bindings={subject={type=uri,v

我将以下内容设置为输入有效负载,并希望输出为结构良好的XML文件,如下所示:我无法控制输入有效负载。我不熟悉Mule DataWeave转换和Mule。请注意,这些只是所有名称和属性的任意值。到目前为止,我尝试使用Mule提供的pull()和map()方法,但没有成功。任何指向正确方向的指示都将不胜感激

输入:

[{head={vars=[subject,instructorCode,instructoreName]},results={bindings={subject={type=uri,value=www.google.com/subject-1-Details},instructorName={type=literal,value=John Smith},instructorCode={type=literal,value=JOS},{subject={type=uri,value=www.google.com/subject-2-Details},instructorName{type=literal,value=Jane-Smith},instructorCode={type=literal,value=JAS}]}},{head={vars=[department,departmentCode,departmentName]},results={bindings=[{department={type=uri,value=www.google.com/department-1-details},departmentName={type=literal,value=Computer Science},departmentCode={type=literal,value=CS},{department=(type=uri,value=www.google.com/department-2-details},departmentName={type=literal,value=English},departmentCode={type=literal,value=EL}]}]

输出:


12353

JSON无效,请发布正确的JSON


如果此错误来自源代码,您可能需要进行一些python pandas数据争用以将其转换为正确的格式。祝您好运。

输入文件肯定不是JSON(它没有引号,使用的是等号而不是冒号),我还怀疑它有输入错误(如“instructorName{type”如果没有equals,则用括号代替大括号和单词“instructoreName”)

保存此文件时,假设您需要按原样对其进行解析,然后将其转换为XML


输入中的数据类型是什么?Hello@George,输入有效负载是一个JSON元素数组,其中一些元素被分配了一个数组作为值。您能确保上面的输入数据是JSON格式吗?是的@George,响应是JSON对象和JSON数组的缩小版本,都在外部数组中。让我这样格式化它,因此更容易看到。它不是有效的JSON。请确保它是有效的,并且格式良好,以便更容易理解。另外,您对输出格式有任何控制吗?Hello@Siva,输入是SPARQL+JSON类型,我猜是在扩展名为.srj的文件中发送的。此外,我们正在将所有数据解析到一个数组中。因此输入仍然是SPARQL+JSON的剩余部分,但在数组中。使用正确的格式相应地更新输入。
%dw 2.0
output application/xml
// Convert to JSON which is the most similar format
var jsonText = 
    (
        // replace equals with colons 
        (payload replace "=" with ":") 
        // remove spaces between special chars
        replace /([\[\]\{\},:]+)\s+([\[\]\{\},:]+)/ 
            with  (mat,index) -> mat[1] ++ mat[2]
    )
    // wrap values with quotes
    replace /([^\[\]\{\},\=:]+)/ 
        with (mat,index) -> "\"" ++ trim(mat[1]) ++ "\""
// Parse it as JSON
var json = read(jsonText,"application/json")
ns ns0 knowledge.publish.google.com
---
{ ns0#CustomMessage: {
        ns0#CustomKLMessage: {
        ns0#CustomMessageHeader: {
            ns0#msgId: "12353",
            ns0#requestDateTime: "2019-12-20T16:04:19.099-05:00",
            ns0#requestorID: "XYZ123",
            ns0#locale: "en_US"
        },
        ns0#elements: {(json map (item,idx) -> {
            ns0#element: {
            ns0#name: item.head.vars[0],
            ns0#values: {( item.results.bindings map (bind,idx2) ->  {
                ns0#value: bind[(item.head.vars[1])].value ++ "||" ++ (bind[(item.head.vars[2])].value)
            })}
            }})
        }
        }
    }
}