【发布时间】:2014-11-15 07:37:00
【问题描述】:
我正在尝试通过使用 XSLT 从现有 XML 获取数据来创建 JSON 格式,但我没有得到所需的输出。
XML 输入
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.microsoft.com/dynamics/2011/01/documents/Message">
<Header>
<MessageId>{FB6E5FF6-AA89-4E56-8079-AFF7BAB84486}</MessageId>
<Action>http://tempuri.org/AIFTrialQueryService/find</Action>
</Header>
<Body>
<MessageParts>
<AIFTrialQuery xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/AIFTrialQuery">
<SMAStageTable_1 class="entity">
<StageId>Closed</StageId>
<StageDescription>Closed</StageDescription>
</SMAStageTable_1>
<SMAStageTable_1 class="entity">
<StageId>In Process</StageId>
<StageDescription>In Process</StageDescription>
</SMAStageTable_1>
<SMAStageTable_1 class="entity">
<StageId>Open</StageId>
<StageDescription>Open</StageDescription>
</SMAStageTable_1>
</AIFTrialQuery>
</MessageParts>
</Body>
</Envelope>
XSLT 输入
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8" indent="no"/>
<xsl:template match="/">
<xsl:apply-templates match="Envelope"/>
</xsl:template>
<xsl:template match="AIFTrialQuery">
{
'Items': [
<xsl:for-each select="SMAStageTable_1">
{
'status': '<xsl:value-of select="StageId"/>',
'statusName': '<xsl:value-of select="StageDescription"/>'
},
</xsl:for-each>
]
}
</xsl:template>
输出我得到的完全不受欢迎的输出
{FB6E5FF6-AA89-4E56-8079-AFF7BAB84486}
http://tempuri.org/AIFTrialQueryService/find
Closed
Closed
In Process
In Process
Open
Open
预期输出为
{
'Items': [
{
'status': 'Closed',
'statusDescription': 'Closed'
},
{
'status': 'Closed',
'statusDescription': 'Closed'
},
{
'status': 'In Process'
'statusDescription': 'In Process'
}
]
}
【问题讨论】: