是否可以用变量替换JSON对象中包含的XML的值?我的设置是:
{ "language": "en-US", "demoXml": "<General><Name>"ABC"</Name><Address>"123 abc"</Address><Language>en-US</Language></General>" }
我想用变量替换XML中的Language键,而不是硬编码XML中的en-US,我想用它替换Language变量,这可能吗?
Language
en-US
t3psigkw1#
在JavaScript级别,您可以使用template literal:
const language = "en-US"; const msg = { "language": language, "demoXml": `<General> <Name>ABC</Name> <Address>123 abc</Address> <Language>${language}</Language> </General>` }
在XML级别,可以使用实体引用。
nhjlsmyf2#
您向我们展示的JSON格式不正确:“ABC”和“123 abc”周围的引号需要省略,或者转义为\"。如果我们忽略这个问题,下面的XSLT 3.0转换应该可以完成这项工作:
\"
<xsl:transform version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:param name="input-uri"/> <xsl:variable name="json" select="json-doc($input-uri)"/> <xsl:output method="json" indent="yes"/> <xsl:template name="xsl:initial-template"> <xsl:map> <xsl:map-entry key="'language'" select="$json?language"/> <xsl:map-entry key="'demoXml'"> <xsl:variable name="final-xml"> <xsl:apply-templates select="parse-xml($json?demoXml)"/> </xsl:variable> <xsl:sequence select="serialize($final-xml)"/> </xsl:map-entry> </xsl:map> </xsl:template> <xsl:mode on-no-match="shallow-copy"/> <xsl:template match="Language"> <Language><xsl:value-of select="$json?language"/></Language> </xsl:template> </xsl:transform>
(Not测试)。
2条答案
按热度按时间t3psigkw1#
在JavaScript级别,您可以使用template literal:
在XML级别,可以使用实体引用。
nhjlsmyf2#
您向我们展示的JSON格式不正确:“ABC”和“123 abc”周围的引号需要省略,或者转义为
\"
。如果我们忽略这个问题,下面的XSLT 3.0转换应该可以完成这项工作:
(Not测试)。