分层XML到JSON
我必须显示层次结构,我的输入来自XML格式的web服务,如下所示:分层XML到JSON,xml,json,xslt,Xml,Json,Xslt,我必须显示层次结构,我的输入来自XML格式的web服务,如下所示: <Nodes> <Node> <Data> <Attribute name="ID">Desktop</Attribute> <Attribute name="Parent">administrator</Attribute> </Data>
<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更改为:它不适用于更复杂的结构。非常感谢你!