Отображение структуры в коллекцию в biztalk 2009 - PullRequest
0 голосов
/ 05 мая 2011

Мой вклад выглядит примерно так:

<Person>
 <FirstName>abc</FirstName>
 <Bsn>2345467</Bsn>
<Person>

Вывод должен быть:

<Person>
  <properties>
    <property>
       <propertyname> Firstname </propertyname>
       <propertyValue> abc </propertyValue>
    </property>
    <property>
       <propertyname> Bsn</propertyname>
       <propertyValue> 2345467 </propertyValue>
    </property>
   </properties>
</Person>

Я имею в виду, что у цели нет определенных свойств / атрибутов. Вместо этого он имеет коллекцию свойств, в которой я указываю имя свойства и значение свойства.

Любая помощь высоко ценится.

Я использую Biztalk 2009

Пожалуйста, помогите

1 Ответ

1 голос
/ 06 мая 2011

В этом случае я бы использовал пользовательский XSLT - либо с помощью функции сценариев , либо заменив всю карту пользовательским файлом XSLT (в зависимости от того, как выглядит остальная часть вашей карты).

Решение может выглядеть примерно так.

XML

<Persons>
 <Person>
  <FirstName>abc</FirstName>
  <Bsn>2345467</Bsn>
 </Person>
</Persons>

XSLT

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="xml" indent="yes"/>

 <xsl:template match="Persons">
  <Persons>
   <xsl:apply-templates select="Person" />
  </Persons>
 </xsl:template>

 <xsl:template match="Person">
  <Person>
   <properties>
    <xsl:apply-templates select="*" mode="properties" />
   </properties>
  </Person>
 </xsl:template>

 <xsl:template match="node()" mode="properties">
  <property>
   <propertyname>
    <xsl:value-of select="local-name()"/>
   </propertyname>
   <propertyvalue>
    <xsl:value-of select="."/>
   </propertyvalue>
 </property>
 </xsl:template>

</xsl:stylesheet>

Результат

 <?xml version="1.0" encoding="utf-8"?>
 <Persons>
  <Person>
   <properties>
    <property>
     <propertyname>FirstName</propertyname>
     <propertyvalue>abc</propertyvalue>
    </property>
    <property>
     <propertyname>Bsn</propertyname>
     <propertyvalue>2345467</propertyvalue>
    </property>
   </properties>
  </Person>
 </Persons>
...