0

我有一个源模式,其元素少于目标模式。当我运行地图时,仅显示目标架构中的映射元素。我希望显示目标架构中的所有元素,即使它们是空的。这个怎么做?

4

2 回答 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 回答