我使用Saxon8来解析XQuery,并分析API返回的xml文件。问题是,传入参数的FileWriter总是在“覆盖”模式下使用,即使构造函数使用的是真参数。
我所拥有的示例:
sqc.compileQuery(new FileReader(xq.getCurrentXQueryFile())).run(dqc, new StreamResult(new FileWriter(xq.getResultsFile(), true)), props);
sqc是一个StaticQueryContext。true是FileWriter构造函数使用追加模式的可选参数。
因此,正如我所说的,它仍然在每个"compileQuery“上重写文件。我试着检查源代码,但它对我的水平来说真的太重了…
因此,如果有人知道是否有一种“干净”的方法在一个文件中获得多个结果,谢谢!:-)
PS :我知道每次启动创建一个文件,然后在一个文件中获取所有文件的内容是很容易的,但这并不是我所说的“干净”。
发布于 2018-08-17 06:15:24
您使用的是一个非常古老的Saxon版本(不确定是哪个:"Saxon 8“可能是8.0到8.9之间的任何东西,这是大约2001到2007年之间发布的一系列版本;当前版本是9.8)。您还使用了一个非常旧的API,它仍然在一定程度上受到支持,但在后续版本中发生了相当大的变化,这意味着很难给您提供准确的建议。我强烈建议您继续使用Saxon9.8,并使用s9api应用编程接口,它是为稳定而设计的,并且在实践中已经证明非常稳定。
话虽如此,但很难看出这里到底出了什么问题。Saxon只是将字符写入到您提供的Writer中;它不可能做其他任何事情。您提供的Writer是根据Java规范将数据附加到文件的写入器。一种可能性是写入者在写完之后没有被适当地关闭,但我们没有办法在这样一个旧版本上调查这种可能性。
所以我认为您应该尝试使用最新版本的Saxon,在一个简单而完整的独立程序中提供一个完整的repro;,这样我们就可以帮助您找到bug。
发布于 2018-08-17 18:35:53
实际上,它是Saxon 9,而不是8,我找到了问题所在。在附加模式中,标签“
props.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
现在我有了其他问题,但与api无关,我的xml没有针对sax解析器进行验证(没有根node...as我从xquery添加了两次根节点,解析器想要一个真正的根节点,但我会处理它。;-))。
再次感谢。
https://stackoverflow.com/questions/51880306
复制相似问题