gpt4 book ai didi

xslt 用虚拟替换空数组

转载 作者:行者123 更新时间:2023-12-02 04:22:25 24 4
gpt4 key购买 nike

我有一个像这样的 JSON 请求

{
"aaaa": []
}

首先我需要检查我的请求负载中是否存在 aaaa,如果像上面那样存在,我需要添加一个具有虚拟属性和值的 jsonObject,如下所示:

{
"aaaa": [
{
"@c": "test"
"a": "99999",
"b": "test",
"c": "test"
}
],

如果 aaaa 不存在于我的负载中,我还需要添加它及其虚拟属性和值。因此,如果负载是 {} ,在 xslt 之后,它应该是与上面相同的 JSON。在我的转型中,我尝试过这样处理这个问题:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//jsonObject">
<xsl:copy>
<xsl:if test="//jsonObject/not(aaaa)">
<aaaa>
<xsl:attribute name="c">test</xsl:attribute>
<a>99999</a>
<b>test</b>
<c>test</c>
</aaaa>
</xsl:if>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//jsonObject/aaaa">
<xsl:copy>
<xsl:attribute name="c">test</xsl:attribute>
<a>99999</a>
<b>test</b>
<c>test</c>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

有了这个请求:

{
"aaaa": []
}

转换后我看不到 aaaa 数组及其虚拟属性。

感谢您的任何建议!

最佳答案

来自 WSO2 documentation

JSON:

{"array":[]}

XML (JsonStreamBuilder):

<jsonObject></jsonObject>

XML (JsonBuilder):

<jsonObject>
<?xml-multiple array?>
</jsonObject>

当我对两个输出运行您的转换时,我得到

<jsonObject>
<aaaa c="test">
<a>99999</a>
<b>test</b>
<c>test</c>
</aaaa>
</jsonObject>

<jsonObject>
<aaaa c="test">
<a>99999</a>
<b>test</b>
<c>test</c>
</aaaa>
<?xml-multiple array?>
</jsonObject>

请注意:我并不是说我认可您的样式表。我会更好地使用:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="jsonObject[not(aaaa)]">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<aaaa c="test">
<a>99999</a>
<b>test</b>
<c>test</c>
</aaaa>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

关于xslt 用虚拟替换空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58639003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com