Mulesoft Web服务XML输出到JSON
我是Mulesoft的新手,正在创建一个流程,我正在使用一个将XML作为输出的Web服务,并且需要将XML转换为Mule中的JSON。Mulesoft Web服务XML输出到JSON
下面是我的骡子流,
下面是邮差漂亮值,
<?xml version="1.0" encoding="UTF-8"?>
<GetProjectResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="namespaceName">
<GetProjectResult><root>
<header>
<status>
<message>Success</message>
</status>
</header>
<data>
<Project>
<ProjectId>12345</ProjectId>
<ProjectShortName>ABCDEF</ProjectShortName>
<BusinessGroupName>ABCDEF GROUP</BusinessGroupName>
<InstitutionShortName>Country</InstitutionShortName>
<CountryName>Sample</CountryName>
<Code>Sample</Code>
</Project>
</data>
</root></GetProjectResult>
</GetProjectResponse>
但我的JSON看起来像这样,
{
"GetProjectResponse": {
"@xmlns:xsd": "http://www.w3.org/2001/XMLSchema",
"@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"@xmlns:xmlns": "namespaceName",
"GetProjectResult": "<root>\n <header>\n <status>\n <message>Success</message>\n </status>\n </header>\n <data>\n <Project>\n <ProjectId>12345</ProjectId>\n <ProjectShortName>ABCDEF</ProjectShortName>\n <BusinessGroupName>ABCDEF GROUP</BusinessGroupName>\n <InstitutionShortName>Country</InstitutionShortName>\n <CountryName>Sample</CountryName>\n <Code>Sample</Code>\n </Project>\n </data>\n</root>"
}
}
我实际的XML是“GetProjectResult”节点内的值,有人能告诉我如何我会做到这一点。
方案3:
<http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8083" basePath="test3" doc:name="HTTP Listener Configuration"/>
<flow name="removeFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
<json:xml-to-json-transformer doc:name="XML to JSON"/>
<logger message="#[json:GetProjectResponse/GetProjectResult]" level="INFO" doc:name="Logger"/>
<set-variable variableName="extractJsondata" value="#[json:GetProjectResponse/GetProjectResult]" mimeType="application/json" doc:name="Variable"/>
<set-payload value="#[flowVars.extractJsondata]" doc:name="Set Payload"/>
<echo-component doc:name="Echo"/>
</flow>
我已经给你的直接XML作为我的邮递员输入。能够得到上述结果。
作为另一种方式 json-to-object-transformer
并且您可以提取有效负载。 https://docs.mulesoft.com/mule-user-guide/v/3.7/mule-expression-language-tips(请参阅此URL中的JSON处理部分)。希望这可以帮助。
3个选项
1.You可以使用Xpath
或Xpath3
表达(基于骡子版本),并提取GetProjectResult
第一,那么您可以在使用xmlToJson变压器这将是一个更简单的选择转换成JSON。
2.接通到流进入XML删除的时候,名字空间转换中的Json
3.使用直接xmlToJson变压器(目前你正在做的),转换到JSONtoObject,并提取所需值在此链接中提到Extract values from a json response in mule flow(或)直接使用此链接中提到的Evaluate how to access json data mule esb
我试过了你的选择,但没有运气。不知道Iam在哪里失踪。给出详细信息作为具有良好格式的另一个答案 – user2665819
我使用XSLT获取'GetProjectResult'对象,然后应用内置的XmlToJson转换器。
XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" />
<xsl:template match="/">
<xsl:value-of disable-output-escaping="yes" select="//GetProjectResult" />
</xsl:template>
</xsl:stylesheet>
FLOW
XML流量:
<mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
<mulexml:xslt-transformer xsl- file="test.xsl" maxIdleTransformers="2" maxActiveTransformers="5" doc:name="XSLT"/>
<byte-array-to-string-transformer doc:name="Byte Array to String"/>
<json:xml-to-json-transformer doc:name="XML to JSON"/>
<logger message="#[payload:java.lang.String]" level="INFO" doc:name="Logger"/>
应用上述流程后,
JSON响应是如下:
{
"root" : {
"header" : {
"status" : {
"message" : "Success"
}
},
"data" : {
"Project" : {
"ProjectId" : "12345",
"ProjectShortName" : "ABCDEF",
"BusinessGroupName" : "ABCDEF GROUP",
"InstitutionShortName" : "Country",
"CountryName" : "Sample",
"Code" : "Sample"
}
}
}
}
这是你想要的JSON?
是的,这是我想要的JSON。非常感谢。你能告诉我:
你能告诉XML配置的一部分,我想TI怎么看你申请了这个XSL零件 – user2665819
非常感谢解决方案。出于某种原因,尽管DOM-XML给了我XML输出,但XSLT并没有给我输出。因此尝试了明星的选择并且工作。无论如何,非常感谢您的时间 – user2665819
这是因为你的XML是字符串格式,所以首先将其转换或使用XML文件。那么你可以通过转换消息组件轻松转换。
它的工作。非常感谢 – user2665819
明星,你能检查一下你是否能够检查我的另一个问题http://*.com/q/37801082/2665819 – user2665819