我有一个像这样的XML文件:
<Obj something1="test" something2="test">
<children something1="test" />
<something2>test</something2>
</children>
</Obj>
并希望将其转换为像这样的硬编码对象(Typeschript):
var Obj = {
something1: "test",
something2: "test",
children: [{
something1: "test",
something2: "test"
}]
};
有没有这样做的工具?
答案 0 :(得分:0)
您要查找的工具名为XSLT (W3Schools) 以下XSLT-1.0样式表创建了您要查找的输出:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<xsl:template match="Obj">
<xsl:text>var Obj = { 
</xsl:text>
<xsl:for-each select="@* | *[count(child::*) = 0]">
<xsl:value-of select="local-name()" />: <xsl:value-of select="." />
<xsl:if test="position() != last()">,</xsl:if>
</xsl:for-each>
<xsl:if test="count(child::*) > 0">,</xsl:if>
<xsl:apply-templates />
};
</xsl:template>
<xsl:template match="children">
<xsl:text>children: [{
</xsl:text>
<xsl:for-each select="@* | *[count(child::*) = 0]">
<xsl:value-of select="local-name()" />: <xsl:value-of select="." />
<xsl:if test="position() != last()">,</xsl:if>
</xsl:for-each>
}]
</xsl:template>
</xsl:stylesheet>
<强>输出:强>
var Obj = {
something1: test,something2: test,
children: [{
something1: test,something2: test
}]
};
如果您可以使用XSLT-2.0或XSLT-3.0,则可以进一步简化此样式表。