Datapower_Remove Все пустые элементы, кроме одного, в SOAP в JSONX XSLT - PullRequest
0 голосов
/ 13 октября 2019

У меня есть требование, когда я получаю SOAP-ответ в datapower, который я преобразовываю в JSONX, так как ответ очень большой, я удаляю все нулевые элементы, используя приведенный ниже код. Но здесь мне не нужно удалять некоторые элементы, даже еслихотя я получаю ноль от поддержки. Может ли кто-нибудь помочь, пожалуйста.

    <xsl:apply-templates mode="removenullfields" select="$response"/>
    <xsl:template mode="removenullfields" match="node()|@*">
    <xsl:copy>
    <xsl:apply-templates mode="removenullfields" select="node()|@*"/>
    </xsl:copy>
    </xsl:template>
    <xsl:template mode="removenullfields" match="*[not(normalize-space())]"/>
    <xsl:template mode="removenullfields" match="*[not(self::elementname)][not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>

Ниже приведен пример XML-ответа, который я получаю от серверной части, при преобразовании в JSON, я хотел бы удалить все пустые элементы и объекты, которые поступают изЯ хотел бы отправить только эти элементы (утверждение, координатор-заголовок, createUser-userId), даже если он пуст из бэкэнда с использованием универсальной логики, поскольку мой xslt очень большой. Не могли бы вы помочь мне здесь.

<soap:Envelope>
   <soap:Body>
      <Response>
      <Disp>
            <agency/>
            <allegation>Test</allegation>
            <test>
               <firstName>Test</firstName>
               <lastName>Test</lastName>
               <type>Test</type>
            </test>
            <coordinator>
               <userId></userId>
               <title>Test</title>
               <email></email>
            </coordinator>
            <Date>Test</Date>
            <User>
               <Id></Id>
               <clientName>0</clientName>
            </User>
             </Disp>
      </Response>
   </soap:Body>
</soap:Envelope>

Я попробовал приведенную ниже логику в преобразовании json в мыло. Он работает, даже когда я передаю пустое значение в поле утверждения в запросе. Та же логика не работает для преобразования SOAP в JSON

  <xsl:template mode="removenullfields" match="*[not(self::allegation)][not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>
...