我正在使用xslt将xml转换为json。 我遇到的问题是:如果特定的xml元素没有兄弟姐妹,它不会作为数组返回。
<xsl:if test="count(preceding-sibling::*[name() = name(current())]) = 0">
<xsl:text>"</xsl:text><xsl:value-of select="name()" /><xsl:text>":</xsl:text>
<xsl:if test="count(following-sibling::*[name() = name(current())]) > 0">
<xsl:text>[</xsl:text>
</xsl:if>
</xsl:if>
我想要的是如果父级的兄弟姐妹拥有与数组相同的元素,那么这个元素也必须是一个数组。
所以我想要的是:
<element>
<child_element>
<grandchild_element>
only one
</grandchild_element>
</child_element>
<child_element>
<grandchild_element>
one
</grandchild_element>
<grandchild_element>
two
</grandchild_element>
</child_element>
我想要以下输出
{
"element": {
"child-element": [
{
"grandchild_element": "only one"
}
],
"child-element": [
{
"grandchild_element": "one" ,
"grandchild_element": "two"
}
]
}
}
感谢
答案 0 :(得分:2)
已经有很多尝试来定义XML和JSON之间的映射,这不是一个小问题。我建议在尝试对此转换进行编码之前,先研究一些现有的建议映射,如果要进行不同的映射,请在开始编码之前仔细指定。
您要遇到的一个问题是,如果您在不了解架构的情况下尝试执行此操作,您会发现很难知道何时输出单个JSON对象以及何时输出单个成员数组。例如,如果某人有一个电话号码,您将输出一个值,但如果他们有多个,您将输出一个数组:您无法知道何时看到一个电话号码,收件人是否期望一个数组电话号码。这不是一个编码问题,这是一个问题,XML实例中没有足够的信息来区分。