提问人:Binsky 提问时间:11/17/2023 更新时间:11/18/2023 访问量:34
XSLT3 - xml-to-json() 函数生成未转义的 json
XSLT3 - xml-to-json() function generate un-escaped json
问:
使用 Saxon XSLT 3.0,我正在尝试将 XML 转换为 JSON。第一步是将输入XML转换为所需的Maps & Array格式,即xml-to-json()所需的格式。
当我然后调用函数时
<xsl:result-document href="{$target_json}" method="json">
<xsl:copy-of select="xml-to-json($intermediate_XML, map{., 'indent':false() })"></xsl:copy-of>
</xsl:result-document>
示例 XML:
<?xml version="1.0" encoding="US-ASCII"?>
<map xmlns="http://www.w3.org/2005/xpath-functions">
<string key="headline">Matilda sold such dreadful ties</string>
<string key="body">
<p>Matilda sold such dreadful ties.</p>
<p>It made Juan retch and...</p>
</string>
</map>
JSON 结果
"\n { \"headline\" : \"Matilda sold such dreadful ties\",\n \"body\" : \"\\n<p>Matilda sold such dreadful ties.<\\\/p>\\n<p>It made Juan retch and...<\\\/p>\\n\" }"
我所期望和需要的是
{ "headline" : "Matilda sold such dreadful ties", "body" : "\n<p>Matilda sold such dreadful ties.<\/p>\n<p>It made Juan retch and...<\/p>\n" }
没有开头和结尾引号“和所有转义字符。
任何帮助将非常受欢迎,谢谢。
答:
0赞
Martin Honnen
11/17/2023
#1
我不认为您既想要输出方法,也想要使用输出方法,将输出方法用于该函数的结果。json
xml-to-json
text
另一个在 Azure 后端中使用 Saxon HE 11 的示例,这次是使用 xsl:result-document。
如果您将数据表示为XDM 3.1映射/数组,则输出方法很有用,例如json
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="3.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all">
<xsl:output method="json" indent="yes"/>
<xsl:template name="xsl:initial-template">
<xsl:sequence
select='map { "headline" : "Matilda sold such dreadful ties", "body" : " <p>Matilda sold such dreadful ties.</p> <p>It made Juan retch and...</p> " }'/>
</xsl:template>
</xsl:stylesheet>
在线示例。
评论
0赞
Binsky
11/18/2023
谢谢马丁,你的特殊网站确实提供了我预期的结果。我注意到您没有在代码中使用 xsl:result-document,当我应用您使用 method=“text” 的建议时,输出对我来说保持不变。xsl:result-document 会影响这一点吗?如果需要,我可以使用您的解决方案将额外的步骤附加到处理管道中。
0赞
Martin Honnen
11/18/2023
@Binsky,我在支持的地方添加了另一个示例链接,创建的(您需要在使用 XSLT 按钮后选择该链接)与上一个示例的主要结果具有相同的内容。所以不,使用应该没有区别,关键是,给你一个带有 JSON 的字符串,如果你使用 ,你会得到那个 JSON 字符串,如果你使用 ,你会得到一个 JSON 字符串转义为 JSON 字符串。xsl:result-document
example1.json
xsl:result-document
xml-to-json
method="text"
method="json"
评论