Я пытаюсь преобразовать XML в Json с использованием XSLT, после того, как используются XSLT и xml, по какой-то причине он пропускает массив и рассматривает все объекты массива как один объект,
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
{
<xsl:apply-templates select="*"/>}
</xsl:template>
<!-- Object or Element Property-->
<xsl:template match="*">
"<xsl:value-of select="name()"/>" :<xsl:call-template name="Properties">
<xsl:with-param name="parent" select="'Yes'"> </xsl:with-param>
</xsl:call-template>
</xsl:template>
<!-- Array Element -->
<xsl:template match="*" mode="ArrayElement">
<xsl:call-template name="Properties"/>
</xsl:template>
<!-- Object Properties -->
<xsl:template name="Properties">
<xsl:param name="parent"></xsl:param>
<xsl:variable name="childName" select="name(*[1])"/>
<xsl:choose>
<xsl:when test="not(*|@*)">
<xsl:choose>
<xsl:when test="$parent='Yes'">
<xsl:text>"</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"</xsl:text>
</xsl:when>
<xsl:otherwise>
"<xsl:value-of select="name()"/>":"<xsl:value-of select="."/>"
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:when test="count(*[name()=$childName]) > 1">
{ "<xsl:value-of select="$childName"/>" :[<xsl:apply-templates select="*" mode="ArrayElement"/>] }
</xsl:when>
<xsl:otherwise>
{
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="*"/>
}
</xsl:otherwise>
</xsl:choose>
<xsl:if test="following-sibling::*">,</xsl:if>
</xsl:template>
<!-- Attribute Property -->
<xsl:template match="@*">
"<xsl:value-of select="name()"/>" : "<xsl:value-of select="."/>",
</xsl:template>
</xsl:stylesheet>
Со следующим XML
<Customers>
<docNo>IN190168478</docNo>
<Customered Id="99">
<Name>Bob</Name>
<Age>39</Age>
<Address>
<Street>10 Idle Lane</Street>
<City>Yucksville</City>
<PostalCode>xxxyyy</PostalCode>
</Address>
</Customered>
<Customered Id="101">
<Name>Bill</Name>
<Age>39</Age>
<Address>
<Street>10 Idle Lane</Street>
<City>Yucksville</City>
<PostalCode>xxxyyy</PostalCode>
</Address>
</Customered>
</Customers>
Ожидаемое Json должно быть
{
"Customers": {
"docNo": "IN190168478"
},
"Customered": [{
"Id": "99",
"Name": "Bob",
"Age": "39",
"Address": {
"Street": "10 Idle Lane",
"City": "Yucksville",
"PostalCode": "xxxyyy"
}
},
{
"Id": "101",
"Name": "Bill",
"Age": "39",
"Address": {
"Street": "10 Idle Lane",
"City": "Yucksville",
"PostalCode": "xxxyyy"
}
}
]
}
, но я получаю следующее jSon,
{{
"Customers": {
"docNo": "IN190168478",
"Customered": {
"Id": "101",
"Name": "Bill",
"Age": "39",
"Address": {
"Street": "10 Idle Lane",
"City": "Yucksville",
"PostalCode": "xxxyyy"
}
}
}
}}
Он получает только последний дочерний элемент массива и переписывает его на весь предыдущий, я конвертирую его, используя c#