Учетная запись интеграции Azure (Карты - XSLT) - объединение 2 разных XML в один XML с приложениями логики - PullRequest
1 голос
/ 31 октября 2019

В приложениях логики Azure у меня есть 2 разных xml файла Parent.xml & Children.xml в формате JSON.

Требование - Мне нужносоздать объединение этих двух файлов в один файл Family.xml с помощью XSLT, хранящегося в учетной записи интеграции.

** Требуется помощь при создании XSLT со встроенным кодом C # для пользовательской логики кода. Этот XSLT необходимо поместить в карты учетной записи интеграции Azure. **

Ниже приведены образцы : -

Parent.xml

    <ParentRoot>
     <ParentName>
      <Father>
        <FirstName>FFirstName</FirstName>
        <LastName>FLastName</LastName>
        <Age>35</Age>
      </Father>
      <Mother>
        <FirstName>MFirstName</FirstName>
        <LastName>MLastName</LastName>
        <Age>33</Age>
      </Mother>
     </ParentName>            
    </ParentRoot>

Children.xml

<ChildrenRoot>
<Child>
    <FirstName>Child1FirstName</FirstName>
    <LastName>Child1LastName</LastName>
    <Age>14</Age>
</Child>
<Child>
    <FirstName>Child2FirstName</FirstName>
    <LastName>Child2LastName</LastName>
    <Age>10</Age>
</Child>
</ChildrenRoot>

Family.xml

<FamilyRoot>
  <ParentName>
          <Father>
            <FirstName>FFirstName</FirstName>
            <LastName>FLastName</LastName>
            <Age>35</Age>
          </Father>
          <Mother>
            <FirstName>MFirstName</FirstName>
            <LastName>MLastName</LastName>
            <Age>33</Age>
          </Mother>
  </ParentName>
<TotalChildren>2</TotalChildren>
<ChildrenCollection>
    <Child>
        <FirstName>Child1FirstName</FirstName>
        <LastName>Child1LastName</LastName>
        <Age>14</Age>
    </Child>
    <Child>
        <FirstName>Child2FirstName</FirstName>
        <LastName>Child2LastName</LastName>
        <Age>10</Age>             
    </Child>
</ChildrenCollection>     
</FamilyRoot>

1 Ответ

0 голосов
/ 01 ноября 2019

Сначала я думаю, что вам лучше объединить два ресурса xml с одним xml как ресурс в приложении логики, как показано ниже:

<root>
    <ParentRoot>
         <ParentName>
              <Father>
                <FirstName>FFirstName</FirstName>
                <LastName>FLastName</LastName>
                <Age>35</Age>
              </Father>
              <Mother>
                <FirstName>MFirstName</FirstName>
                <LastName>MLastName</LastName>
                <Age>33</Age>
              </Mother>
         </ParentName>            
    </ParentRoot>

    <ChildrenRoot>
        <Child>
            <FirstName>Child1FirstName</FirstName>
            <LastName>Child1LastName</LastName>
            <Age>14</Age>
        </Child>
        <Child>
            <FirstName>Child2FirstName</FirstName>
            <LastName>Child2LastName</LastName>
            <Age>10</Age>
        </Child>
    </ChildrenRoot>
</root>

Затем я пишу код xsl для преобразования xml для вашегоссылка:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="/">
        <xsl:element name="FamilyRoot">
            <xsl:element name="ParentName">
                <xsl:element name="Father">
                    <xsl:element name="FirstName">
                        <xsl:value-of select="root/ParentRoot/ParentName/Father/FirstName" />
                    </xsl:element>
                    <xsl:element name="LastName">
                        <xsl:value-of select="root/ParentRoot/ParentName/Father/LastName" />
                    </xsl:element>
                    <xsl:element name="Age">
                        <xsl:value-of select="root/ParentRoot/ParentName/Father/Age" />
                    </xsl:element>
                </xsl:element>
                <xsl:element name="Mother">
                    <xsl:element name="FirstName">
                        <xsl:value-of select="root/ParentRoot/ParentName/Father/FirstName" />
                    </xsl:element>
                    <xsl:element name="LastName">
                        <xsl:value-of select="root/ParentRoot/ParentName/Father/LastName" />
                    </xsl:element>
                    <xsl:element name="Age">
                        <xsl:value-of select="root/ParentRoot/ParentName/Father/Age" />
                    </xsl:element>
                </xsl:element>
            </xsl:element>

            <xsl:element name="TotalChildren">
                <xsl:value-of disable-output-escaping="yes" select="count(//Child)"/>
            </xsl:element>

            <xsl:element name="ChildrenCollection">
                <xsl:for-each select="root/ChildrenRoot/Child">
                    <xsl:element name="Child">
                        <xsl:element name="FirstName">
                            <xsl:value-of select="FirstName" />
                        </xsl:element>
                        <xsl:element name="LastName">
                            <xsl:value-of select="LastName" />
                        </xsl:element>
                        <xsl:element name="Age">
                            <xsl:value-of select="Age" />
                        </xsl:element>
                    </xsl:element>
                </xsl:for-each>
            </xsl:element>

        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

После этого мы можем загрузить приведенный выше код xsl в учетную запись интеграции в виде карты и использовать действие " Transform XML " в приложении логики для преобразования ресурса xml.

Надеюсь, это поможет вашей проблеме ~

...