0
  1. 私の XML データには、xml に「\」文字が含まれています。
  2. Mobilefirst Adapter で Transformation を使用しなかった場合、正常に動作します。
  3. しかし、MobielFirst で xsl 経由で変換を使用すると、以下のようなエラーがスローされます

    エラー": [ "行 4、列 471 の非 16 進数", "返された InvocationResult は有効な JSON オブジェクトでなければなりません。" ],

  4. XML に存在するスラッシュ「\」が原因であることがわかりました。

  5. MobileFirst でこのエラーを解決する方法を除いて、同じ .XSL コードが他のコードで正常に機能します。

  6. 「DESCRIPTION」を削除/コメントすると、<xsl:value-of select="DESCRIPTION" />正常に機能します。

XML

<?xml version="1.0" encoding="UTF-8" ?>
    <Envelope>
        <Body>
            <QueryResponse>
                <CLASSIFICATIONSSet>
                    <CLASSSTRUCTURE>
                        <CLASSIFICATIONID>Kawin</CLASSIFICATIONID>
                        <CLASSSTRUCTUREID>1001</CLASSSTRUCTUREID>
                        <CLASSUSEWITH>
                            <OBJECTNAME>1</OBJECTNAME>
                        </CLASSUSEWITH>
                        <CLASSUSEWITH>
                            <OBJECTNAME>2</OBJECTNAME>
                        </CLASSUSEWITH>
                        <CLASSUSEWITH>
                            <OBJECTNAME>3</OBJECTNAME>
                        </CLASSUSEWITH>
                        <CLASSUSEWITH>
                            <OBJECTNAME>4</OBJECTNAME>
                        </CLASSUSEWITH>
                        <DESCRIPTION>End User Issue \ Telco</DESCRIPTION>
                        <HIERARCHYPATH>Good \ BAD</HIERARCHYPATH>
                        <OBJECTNAME>1</OBJECTNAME>
                    </CLASSSTRUCTURE>
                </CLASSIFICATIONSSet>
            </QueryResponse>
        </Body>
    </Envelope>

XSL

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:h="http://www.w3.org/1999/xhtml"
               >
    <xsl:output method="text"/>

    <xsl:template match="/">
        {


                'ClassificationData': [
                    <xsl:for-each select="*//CLASSSTRUCTURE">


                                    {
                                        "CLASSSTRUCTUREID" : '<xsl:value-of select="CLASSSTRUCTUREID" />', 
                                        "DESCRIPTION" : '<xsl:value-of select="DESCRIPTION" />' ,
                                        "CLASSIFICATIONID" : '<xsl:value-of select="CLASSIFICATIONID" />',
                                        "OBJECTNAME" : '<xsl:value-of select="OBJECTNAME" />',

                                         "CLASSUSEWITH" : [

                                            <xsl:for-each select="CLASSUSEWITH">
                                             {
                                                    "OBJECTNAME" : "<xsl:value-of select="OBJECTNAME" />"
                                             } ,
                                            </xsl:for-each>
                                        ]
                                    },
                       </xsl:for-each>
                    ]
      </xsl:choose>
        }
    </xsl:template>
</xsl:stylesheet>
4

1 に答える 1