基于此线程,我在其中修复来自sharepoint的响应。
响应
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<SharepointResponse xmlns="http://test.com.services.generic">
<Sharepoint_Response>
<CopyIntoItemsResponse xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<CopyIntoItemsResult>0</CopyIntoItemsResult>
<Results>
<CopyResult ErrorCode="Success" DestinationUrl="http://archivelink.dev.test.com/enterprise"/>
</Results>
</CopyIntoItemsResponse>
</Sharepoint_Response>
</SharepointResponse>
</Body>
</Envelope>
我正在将其转换为JSONX,我需要<CopyIntoItemsResult>0</CopyIntoItemsResult>
< ErrorCode="Success"
和
DestinationUrl="http://archivelink.dev.test.com/enterprise"/>
以下是我使用的Xpath
1) CopyIntoItemsResult <xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*[local-name()='CopyIntoItemsResponse']/*[local-name()='CopyIntoItemsResult']/text()"/>
2) ErrorCode /*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*[local-name()='CopyIntoItemsResponse']/*[local-name()='Results']/*[local-name()='CopyResult']/@*[local-name()='ErrorCode']
3) DestinationUrl /*[local-name()='Envelope']/*[local-name()='Body']/*[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*[local-name()='CopyIntoItemsResponse']/*[local-name()='Results']/*[local-name()='CopyResult']/@*[local-name()='DestinationUrl']
问题是我没有得到任何价值,我无法弄明白我做错了什么?
任何人都可以帮忙。
答案 0 :(得分:0)
您没有真正展示您的XSLT,但这取决于您的模板匹配。如果您使用了星号(*
),那么您的XPath应该可以正常工作。或者,您可以在模板匹配中使用反斜杠(/
),但在每个XPath的开头删除它。
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" encoding="UTF-8" indent="yes" omit-xml-declaration="no" />
<xsl:strip-space elements="*" />
<xsl:template match="*">
<data>
<CopyIntoItemsResult>
<xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*
[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*
[local-name()='CopyIntoItemsResponse']/*
[local-name()='CopyIntoItemsResult']/text()"/>
</CopyIntoItemsResult>
<ErrorCode>
<xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*
[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*
[local-name()='CopyIntoItemsResponse']/*[local-name()='Results']/*
[local-name()='CopyResult']/@*[local-name()='ErrorCode']"/>
</ErrorCode>
<DestinationUrl>
<xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*
[local-name()='SharepointResponse']/*[local-name()='Sharepoint_Response']/*
[local-name()='CopyIntoItemsResponse']/*[local-name()='Results']/*
[local-name()='CopyResult']/@*[local-name()='DestinationUrl']"/>
</DestinationUrl>
</data>
</xsl:template>
</xsl:transform>
<强>输出强>
<data>
<CopyIntoItemsResult>0</CopyIntoItemsResult>
<ErrorCode>Success</ErrorCode>
<DestinationUrl>http://archivelink.dev.test.com/enterprise</DestinationUrl>
</data>