我已经使用一些Childs定义了一个文档(来自xsd架构)。 那些孩子必须按照某种顺序,才能拥有正确的Xml信息。
当In进行一些映射步骤时,元素顺序与文档引用中定义的不同。 如何强迫呢?
数据是正确的,但不是订单。
问题是当我使用documentToXMLString
服务从文档中创建XmlString时,顺序不正确。
您是否有想法在映射步骤或xml生成时强制执行订单?
答案 0 :(得分:1)
您是否尝试使用参数“documentTypeName”为服务pub.xml提供完全限定的文档类型名称:documentToXMLString?文档“IntegrationServer内置服务参考”声明:
documentTypeName字符串可选描述输出结构和格式的文档类型的完全限定名称 document(例如,examples.rtd:exampleRecord1)。你可以用它 参数,以确保输出包含可能不包含的元素 在运行时出现在文档中,或描述其中的顺序 元素将出现在生成的XML字符串中。
编辑:添加示例,使用wM 9.7
E.g。我有一个xml字符串,如:
<?xml version="1.0"?>
<inputdoc>
<field5>afds</field5>
<field1>asdf</field1>
<field3>asdf</field3>
<field2>asdf</field2>
</inputdoc>
我有一个IS文档类型,其字段为field1,field2,field3和field5。我有一个服务,其中有一个名为xmlstring的输入,它包含上面的xml字符串。我称之为以下服务:
这会产生以下XML字符串:
<?xml version="1.0"?>
<field1>asdf</field1>
<field2>asdf</field2>
<field3>asdf</field3>
<field5>afds</field5>
正如您所看到的,订单以正确的方式发生了变化。
问候
的Henning
答案 1 :(得分:1)
最简单的方法是修改XSD架构。使用XSD&#34;序列&#34; (XSD element Wiki)定义元素的特定顺序。完成后,在web方法中重新导入XSD。
如果无法修改XSD架构,则另一个选项是在流服务中创建一个循环,并为每个PersonalAddress将每个字段映射到规范/内部文档结构的字段。最后,在内部文档上调用documentToXMLString
。
最好的选择是设计一个不依赖于文档中元素顺序的解决方案。
希望这有帮助!