我有一个源模式,其元素少于目标模式。当我运行地图时,仅显示目标架构中的映射元素。我希望显示目标架构中的所有元素,即使它们是空的。这个怎么做?
问问题
1451 次
2 回答
1
设置输出模式的“默认值”。这将创建空节点。
于 2013-07-12T14:28:14.917 回答
0
最方便的方法是为此使用 Inline C# Scripting functoid。
脚本函数:
public string GetEmptyString()
{
return System.String.Empty;
}
您可以将此 functoid 链接到您希望看到空节点的所有输出节点。
例子:
输入架构:
<xs:schema xmlns="http://person" targetNamespace="http://person" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" />
<xs:element name="Surname" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
输出模式:
<xs:schema xmlns="http://employee"
targetNamespace="http://employee"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string" />
<xs:element name="MidName" type="xs:string" />
<xs:element name="LastName" type="xs:string" />
<xs:element name="Age" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
输入消息:
<ns0:Person xmlns:ns0="http://person">
<Name>John</Name>
<Surname>Snow</Surname>
</ns0:Person>
预期的输出消息:
<ns0:Employee xmlns:ns0="http://employee">
<FirstName>John</FirstName>
<MidName />
<LastName>Snow</LastName>
<Age />
</ns0:Employee>
解决方案:
- 将 Person.Name 链接到 Employee.FirstName
- 将 Person.Surname 链接到 Employee.LastName
- 创建返回空字符串的脚本functoid
- 将脚本 functoid 链接到 Employee.MidName
- 将脚本 functoid 链接到 Employee.Age
于 2013-07-16T16:05:16.353 回答