我正在尝试将一个POC转换为xml格式。现在我使用Saxon-HE版本9.8.0-5
通过java进行让我们假设一个简单的json:
.pro
现在java代码如下:
LIBS += D:\opencv-build\bin\libopencv_core320.dll
LIBS += D:\opencv-build\bin\libopencv_highgui320.dll
LIBS += D:\opencv-build\bin\libopencv_imgcodecs320.dll
LIBS += D:\opencv-build\bin\libopencv_imgproc320.dll
LIBS += D:\opencv-build\bin\libopencv_features2d320.dll
LIBS += D:\opencv-build\bin\libopencv_calib3d320.dll
但我得到以下错误:
sample_test1.json的第1行第1列出错: SXXP0003:XML解析器报告错误:prolog中不允许使用内容。
当我尝试将json内容放在任何xml元素中并进行处理时,它就成功了。为什么?? 我们不能直接处理json而不将其内容放入任何xml结构中吗?
答案 0 :(得分:0)
错误消息表明您可能正在使用XML解析器来解析JSON输入。目前尚不清楚变量" inputjson"保存实际的JSON文本,或包含实际JSON文本的文件的URI,但不管怎样,它都不起作用。
因为模板规则在除XML节点之外的任何东西上都不是很有用(尽管事实上XSLT 3.0实际上允许它们),我倾向于写这样的转换:
<xsl:param name="json-uri"/>
<xsl:initial-template name="main">
<xsl:variable name="parsed-json" select="json-doc($json-uri)"/>
....
</xsl:initial-template>
(假设您从包含JSON的文件的URI开始)
然后使用s9api代码沿
行调用它Xslt30Transformer trans = ...;
Map<QName, XdmValue> params = new HashMap<>();
params.add(new QName("", "json-uri"), new XdmAtomicValue(jsonInputUri));
trans.setStylesheetParameters(params);
trans.callTemplate(new QName("", "main"), serializer);