我被传递了一大块用于在 BizTalk 中处理的 XML。xml主要是以下形式:
<FieldItem>
<Name>EmploymentStatus</Name>
<Value xsi:type="xsd:string">1</Value>
</FieldItem>
但是,有时名称值对会变得更复杂,看起来像这样:
<FieldItem>
<Name>EducationAndQualifications</Name>
<Value xsi:type="RepeatingFieldArray">
<Fields>
<RepeatingField>
<Items>
<FieldItem>
<Name>Qualification</Name>
<Value xsi:type="xsd:string">umbraco</Value>
</FieldItem>
<FieldItem>
<Name>Establishment</Name>
<Value xsi:type="xsd:string">IBM</Value>
</FieldItem>
<FieldItem>
<Name>DateAchieved</Name>
<Value xsi:type="xsd:string">June 2011</Value>
</FieldItem>
</Items>
</RepeatingField>
</Fields>
</Value>
</FieldItem>
我曾尝试通过 BizTalks 生成项目向导生成架构,但它无法应对类型的变化以及可能存在或不存在的其他重复字段。
因此,我正在寻找有关此方面最佳前进方式的建议/指导。是否可以创建 BizTalk 愿意处理的架构?或者,我目前偏爱的解决方案,是否应该创建一个自定义管道组件,将其拆分为单独的消息?
谢谢你的时间。
更新
如果我创建以下架构:
<?xml version="1.0" encoding="utf-16" ?>
<xsd:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="FormData">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FormName" type="xsd:string" />
<xsd:element name="FormInstanceId" type="xsd:string" />
<xsd:element name="Status" type="xsd:string" />
<xsd:element name="Data">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="FieldItem">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Name" type="xsd:string" />
<xsd:element minOccurs="0" maxOccurs="unbounded" name="Value" nillable="true" type="xsd:anyType" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
我收到以下错误:
这是一个无效的 xsi:type 'RepeatingFieldArray'
所以我仍然倾向于编写一些代码来解决这一切......