分层XML到JSON

分层XML到JSON,xml,json,xslt,Xml,Json,Xslt,我必须显示层次结构,我的输入来自XML格式的web服务,如下所示: <Nodes> <Node> <Data> <Attribute name="ID">Desktop</Attribute> <Attribute name="Parent">administrator</Attribute> </Data>

我必须显示层次结构,我的输入来自XML格式的web服务,如下所示:

<Nodes>
    <Node>
        <Data>
            <Attribute name="ID">Desktop</Attribute>
            <Attribute name="Parent">administrator</Attribute>
        </Data>
        <Relationship>
            <RelatedNodes>
                <Node>
                    <Data>
                        <Attribute name="ID">administrator</Attribute>>
                        <Attribute name="Parent">Users</Attribute>
                    </Data>
                    <Relationship>
                        <RelatedNodes>
                            <Node>
                                <Data>
                                    <Attribute name="ID">Users</Attribute>
                                    <Attribute name="Parent">C</Attribute>
                                </Data>
                                <Relationship>
                                    <RelatedNodes>
                                        <Node>
                                            <Data>
                                                <Attribute name="ID">C</Attribute>
                                                <Attribute name="Parent"/>
                                            </Data>
                                        </Node>
                                    </RelatedNodes>
                                </Relationship>
                            </Node>
                        </RelatedNodes>
                    </Relationship>
                </Node>
            </RelatedNodes>
        </Relationship>
    </Node>
</Nodes>
{
    children:[{
            "title": "C",
            "level": "1",
            "children": [
                {
                    "title": "Users",
                    "level": "2",
                    "children": [
                        {
                            "title": "administrator",
                            "level": "3",
                        }, 
                        "children": [
                            {
                                "title": "Desktop",
                                "level": "4",
                            },
                        ]
                    ]
                }
            ]
    }]
}
关于如何使用XSLT或任何其他转换工具实现这一点,您有什么想法吗


谢谢

这里有一个小样式,让您了解如何处理此问题:

<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' >
    <xsl:output method='text'  encoding="UTF-8"/>

    <xsl:template match="/">
        {
        <xsl:apply-templates select="//Data[Attribute/@name ='Parent' and Attribute = '' ]/parent::Node" />
        }
    </xsl:template>

    <xsl:template match="Node" >
        <xsl:param name="level" select="1" />
        children:[
        {
        "title": "<xsl:value-of select="Data/Attribute[@name = 'ID']" />",
           "level": "<xsl:value-of select="$level"/>,
           <xsl:apply-templates select="ancestor::Node[1]">
               <xsl:with-param name="level" select="$level+1" />
           </xsl:apply-templates>
        }
        ]

    </xsl:template>
</xsl:stylesheet> 

{
}
儿童:[
{
“名称”:“名称”,
“级别”:“,
}
]
它从节点开始,该节点具有名为“Parent”但没有值的属性


顺便说一句,您的xml结构非常奇怪,如果结构更复杂(同一级别上有更多节点),我不知道该如何工作。

只需继续搜索,有很多方法可以做到这一点,下面是Javascript:您的xml在语法上无效(请修复它)还不清楚它与示例JSON的关系。例如,
C
是什么?感谢Raffian,我找到了很多将XML转换为JSON的工具,但所有这些工具都会逐字转换XML,我的意思是XML的每个元素都是JSON中的一个元素。这里的问题是,我有一个分层的XML结构,我不知道deep,所以我需要转到父级,它应该是结构中较深的元素,并向上转到最后一个元素。但是,如果我不知道结构的深度,我如何知道父级的路径。这是一个Windows文件夹结构的示例是根文件夹,示例路径为:C:/Users/administrator/Desktop。JSON结构使用“children”数组来表示该元素的子元素。要更正XML,请将第11行更改为:administrator如果您工作得很好,我只是将第一个模板中的xpath更改为:它不适用于更复杂的结构。非常感谢你!