- 私の XML データには、xml に「\」文字が含まれています。
- Mobilefirst Adapter で Transformation を使用しなかった場合、正常に動作します。
しかし、MobielFirst で xsl 経由で変換を使用すると、以下のようなエラーがスローされます
エラー": [ "行 4、列 471 の非 16 進数", "返された InvocationResult は有効な JSON オブジェクトでなければなりません。" ],
XML に存在するスラッシュ「\」が原因であることがわかりました。
MobileFirst でこのエラーを解決する方法を除いて、同じ .XSL コードが他のコードで正常に機能します。
「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>