1

我已经用一些 Childs 定义了一个文档(来自 xsd 模式)。这些孩子必须按某种顺序进行,才能进行正确的 Xml 转换。

在制作一些地图步骤时,元素顺序与文档参考中定义的不同。如何强求?

这里是te文档参考中的顺序: 在此处输入图像描述

这里是一些 map stemp 之后的顺序: 在此处输入图像描述

数据正确,但顺序不正确。问题是,当我从文档中使用服务创建 XmlString 时,documentToXMLString顺序不正确。

您是否有在映射步骤或 xml 生成时强制执行订单的想法?

4

2 回答 2

1

最简单的方法是修改 XSD 架构。使用 XSD“序列”(XSD element Wiki)来定义元素的特定顺序。完成后,在 webmethods 中重新导入您的 XSD。

如果您无法修改 XSD 架构,那么另一个选项是在您的流服务中创建一个循环,并为每个 PersonalAddress 将每个字段映射到您的规范/内部文档结构的字段。最后,调用documentToXMLString您的内部文件。

最好的选择是设计一个不依赖于文档中元素顺序的解决方案。

希望这可以帮助!

于 2015-08-05T17:22:41.203 回答
1

您是否尝试过使用参数“documentTypeName”为服务 pub.xml:documentToXMLString 提供完全限定的文档类型名称?文档“IntegrationServer 内置服务参考”指出:

documentTypeName String 可选描述输出文档的结构和格式的文档类型的完全限定名称(例如,examples.rtd:exampleRecord1)。您可以使用此参数来确保输出包括在运行时可能不存在于文档中的元素,或者描述元素在生成的 XML 字符串中出现的顺序。

编辑:添加示例,使用 wM 9.7

例如,我有一个 xml 字符串,例如:

<?xml version="1.0"?>
<inputdoc>
    <field5>afds</field5>
    <field1>asdf</field1>
    <field3>asdf</field3>
    <field2>asdf</field2>
</inputdoc>

我有一个 IS doc 类型,按此顺序包含字段 field1、field2、field3 和 field5。我有一项服务,其中有一个名为 xmlstring 的输入,其中包含上述 xml 字符串。我调用以下服务:

  1. pub.xml:xmlStringToXMLNode:将我的 xml 字符串映射到 xmldata 输入字段
  2. pub.xml:xmlNodeToDocument:将我的节点转换为文档而不使用“documentTypeName”输入字段
  3. pub.xml:documentToXMLString:使用输入字段“documentTypeName”和我定义的 IS 文档类型将我的文档实例转换为 XML 字符串。

这会产生以下 XML 字符串:

<?xml version="1.0"?>
<field1>asdf</field1>
<field2>asdf</field2>
<field3>asdf</field3>
<field5>afds</field5>

如您所见,订单已以正确的方式更改。

问候

亨宁

于 2015-08-03T11:12:22.237 回答