我是XSLT世界的新手,我基本上试图从HERE运行JSON转换
但是如果我使用这种方法:
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource("src\\json\\xml-to-json.xsl"));
transformer.transform(new StreamSource("src\\json\\xmltest.xml"), new StreamResult(new FileOutputStream("birds.out")));
System.out.println(result);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
SystemId Unknown; Line #59; Column #127; Could not find function: if
SystemId Unknown; Line #59; Column #127; Extra illegal tokens: 'then', 'http://json.org/', ':', 'create-node', '(', '$', 'input', ',', 'false', '(', ')', ')', 'else', 'http://json.org/', ':', 'create-simple-node', '(', '$', 'input', ')'
SystemId Unknown; Line #59; Column #127; function token not found.
Run Code Online (Sandbox Code Playgroud)
如果我使用Saxon,我宁愿使用inbuit,因为许可,但只需调用它的主要工作:
String[] args = new String[2];
args[0]="d:\\xmltest.xml";
args[1]="d:\\xml-to-json.xsl";
net.sf.saxon.Transform.main(args);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在Java中正确编码(不调用main),以便我可以存储结果.
干杯
这里有两个问题.1)为什么第一次尝试失败并出现错误?2)如何从撒克逊获得结果?
1)第一次尝试失败,因为您使用的是XSLT 1.0处理器.正如您引用的页面所示,
XSLTJSON是一个XSLT 2.0样式表,用于将任意XML转换为JavaScript Object Notation(JSON)....如果您没有XSLT 2.0处理器,可以使用XSLTJSON Lite,它是一个XSLT 1.0样式表,用于将XML转换为JSONML格式.
因此,如果您使用XSLTJSON Lite,您的问题应该得到解决.
2)如果您仍想尝试Saxon,此页面看起来很有用.它使用的不是直接调用Saxon
// set the TransformFactory to use the Saxon TransformerFactoryImpl method
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl");
Run Code Online (Sandbox Code Playgroud)
之前
TransformerFactory tfactory = TransformerFactory.newInstance();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1954 次 |
| 最近记录: |