ibr*_*sen 5 xml rest json biztalk biztalk-2013r2
我必须通过BizTalk连接REST服务.该服务返回JSON响应,如下所示.当BizTalk响应端口尝试解码JSON消息时,我收到有关JSON到XML转换的错误.由于JSON消息中嵌入了HTML标记,因此发生此错误.
错误:
(执行响应(接收)管道失败:"Avansas.Paritus.Suggest.T.JSONReceive,Avansas.Paritus.Suggest.T,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 7b2984270a9ffd13"来源:"JSON解码器"发送端口:"Avansas.Ibrahim.Suggest.T.SendPort"URI:"api1.test.com/services/rest";原因:解析值时遇到意外字符:<.路径'',第0行,位置0 .)
例如:
如下所示,响应消息在JSON中有一个标签元素.Label元素有一个带有html标签(City)的文本,这就是BizTalk尝试将JSON转换为XML时出现错误的原因.我认为BizTalk尝试将JSON转换为图2,但我想将其转换为图3.
我该如何解决这个问题?
有没有任何方法在没有任何架构的情况下在业务流程上进行passthru传输?
图1
{
"suggestion": [
{
"id": "[31 31 31 30 30 39]",
"label": "Global <b>City</b> 2. Etap Global <b>C?ty</b> ",
"value": "Global <b>City</b> 2. Etap Villalar? "
},
{
"id": "[39 33 36 32 35 36]",
"label": "<b>City</b> Aqua Villas Sk. Ku?adas? Ayd?n",
"value": "<b>City</b> Aqua Villas Sk. Ku?adas? Ayd?n"
}
]
}
Run Code Online (Sandbox Code Playgroud)
图2:
<root>
<suggestion>
<id>[31 31 31 30 30 39]</id>
<label>Global
<b>City</b> 2. Etap Global
<b>C?ty</b>
</label>
<value>Global
<b>City</b> 2. Etap Villalar?
</value>
</suggestion>
<suggestion>
<id>[39 33 36 32 35 36]</id>
<label>
<b>City</b> Aqua Villas Sk. Ku?adas? Ayd?n
</label>
<value>
<b>City</b> Aqua Villas Sk. Ku?adas? Ayd?n
</value>
</suggestion>
</root>
Run Code Online (Sandbox Code Playgroud)
图3:
<root>
<suggestion>
<id>[31 31 31 30 30 39]</id>
<label>Global
<b>City</b> 2. Etap Global
<b>C?ty</b>
</label>
<value>Global
<>City</b> 2. Etap Villalar?
</value>
</suggestion>
<suggestion>
<id>[39 33 36 32 35 36]</id>
<label>
<b>City</b> Aqua Villas Sk. Ku?adas? Ayd?n
</label>
<value>
<b>City</b> Aqua Villas Sk. Ku?adas? Ayd?n
</value>
</suggestion>
</root>
Run Code Online (Sandbox Code Playgroud)
我的服务也可以返回xml响应,当我尝试处理xml响应时,得到以下错误.
XML错误执行响应(接收)管道时出现故障:"Microsoft.BizTalk.DefaultPipelines.XMLReceive,Microsoft.BizTalk.DefaultPipelines,Version = 3.0.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"源:"XML反汇编程序"发送端口:"aaa.bbb.Suggest.T.SendPort"URI:" https://api1.test.com/services/rest "原因:按消息类型"html"查找文档规范失败.验证正确部署的架构
并响应xml如下所示
<?xml version="1.0" encoding="UTF-8"?>
<suggestions>
<suggestion>
<id>111011</id>
<label>Global <b>C?ty</b> 1. Etap V?llalar? Sokak</label>
<value>Global C?ty 1. Etap V?llalar? Sokak</value>
</suggestion>
<suggestion>
<id>111009</id>
<label>Global <b>C?ty</b> 2. Etap V?llalar? Sokak</label>
<value>Global C?ty 2. Etap V?llalar? Sokak</value>
</suggestion>
</suggestions>
Run Code Online (Sandbox Code Playgroud)
使用此架构:
\n\n<?xml version="1.0" encoding="utf-8"?>\n<xs:schema attributeFormDefault="unqualified" elementFormDefault="unqualified" targetNamespace="http://BizTalk_Server_Project1.JSONSchema1" xmlns:xs="http://www.w3.org/2001/XMLSchema">\n <xs:element name="Root">\n <xs:complexType>\n <xs:sequence>\n <xs:element minOccurs="0" maxOccurs="unbounded" name="suggestion">\n <xs:complexType>\n <xs:sequence>\n <xs:element minOccurs="0" name="id" type="xs:string" />\n <xs:element minOccurs="0" name="label" type="xs:string" />\n <xs:element minOccurs="0" name="value" type="xs:string" />\n </xs:sequence>\n </xs:complexType>\n </xs:element>\n </xs:sequence>\n </xs:complexType>\n </xs:element>\n</xs:schema>\nRun Code Online (Sandbox Code Playgroud)\n\n这条管道:
\n\n
产生此消息:
\n\n<ns0:Root xmlns:ns0="http://BizTalk_Server_Project1.JSONSchema1">\n <suggestion>\n <id>[31 31 31 30 30 39]</id>\n <label>Global <b>City</b> 2. Etap Global <b>C\xc4\xb1ty</b> </label>\n <value>Global <b>City</b> 2. Etap Villalar\xc4\xb1 </value>\n </suggestion>\n <suggestion>\n <id>[39 33 36 32 35 36]</id>\n <label><b>City</b> Aqua Villas Sk. Ku\xc5\x9fadas\xc4\xb1 Ayd\xc4\xb1n</label>\n <value><b>City</b> Aqua Villas Sk. Ku\xc5\x9fadas\xc4\xb1 Ayd\xc4\xb1n</value>\n </suggestion>\n</ns0:Root>\nRun Code Online (Sandbox Code Playgroud)\n