gpt4 book ai didi

xml - 如何创建将分层 XML 转换为平面文件的 Biztalk 映射

转载 作者:数据小太阳 更新时间:2023-10-29 02:27:17 27 4
gpt4 key购买 nike

我尝试使用 Biztalk 2010 将分层 XML 文件转换为平面文件架构。

它工作正常。每个文件都被映射。但是层次结构被破坏了。

我的输入 xml 结构如下所示:

<root>
<node>
<element1></element1>
<element2></element2>
<subnode1>
<element1></element1>
<element2></element2>
</subnode1>
<subnode2>
<element1></element1>
<element2></element2>
</subnode2>
</node>
</root>

平面文件架构如下所示:

<root>
<node>
<element1></element1>
<element2></element2>
</node>
<subnode1>
<element1></element1>
<element2></element2>
</subnode1>
<subnode2>
<element1></element1>
<element2></element2>
</subnode2>
</root>

我的输入是这样的:

<root>
<node>
<element1>Test1</element1>
<element2>Test2</element2>
<subnode1>
<element1>Sub11</element1>
<element2>Sub12</element2>
</subnode1>
<subnode2>
<element1>Sub21</element1>
<element2>Sub22</element2>
</subnode2>
</node>
<node>
<element1>Test3</element1>
<element2>Test4</element2>
<subnode1>
<element1>Sub31</element1>
<element2>Sub32</element2>
</subnode1>
<subnode2>
<element1>Sub41</element1>
<element2>Sub42</element2>
</subnode2>
</node>
</root>

我期望的输出是:

Test1;Test2
Sub11;Sub12
Sub21;Sub22
Test3;Test4
Sub31;Sub32
Sub41;Sub42

但我得到的是:

Test1;Test2
Test3;Test4
Sub11;Sub12
Sub21;Sub22
Sub31;Sub32
Sub41;Sub42

关于如何使 Biztalk 保持层次结构的任何想法?

最佳答案

我现在手边没有 BizTalk 映射器,所以我只能提供一个 Xslt 解决方案,但基本上它会说明您需要映射来迭代 node 元素以保留结构.

如果您想使用纯 BizTalk 映射实现此目的,您需要在平面输出结构中有一个分组节点来连接您的源 node 元素,这将强制映射创建 for-每个 循环,如以下 Xslt:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:output method="text" indent="no" />

<xsl:template match="/">
<xsl:for-each select="root/node">
<xsl:value-of select="element1" />
<xsl:text>;</xsl:text>
<xsl:value-of select="element2" />
<xsl:text>&#xA;</xsl:text>
<xsl:value-of select="subnode1/element1" />
<xsl:text>;</xsl:text>
<xsl:value-of select="subnode1/element2" />
<xsl:text>&#xA;</xsl:text>
<xsl:value-of select="subnode2/element1" />
<xsl:text>;</xsl:text>
<xsl:value-of select="subnode2/element2" />
<xsl:text>&#xA;</xsl:text>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

您可能需要根据您的输出架构需求调整换行符 ( )。

关于xml - 如何创建将分层 XML 转换为平面文件的 Biztalk 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11141444/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com