首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java - Saxon API -以"append“模式写入文件

Java - Saxon API -以"append“模式写入文件
EN

Stack Overflow用户
提问于 2018-08-16 23:11:47
回答 2查看 117关注 0票数 0

我使用Saxon8来解析XQuery,并分析API返回的xml文件。问题是,传入参数的FileWriter总是在“覆盖”模式下使用,即使构造函数使用的是真参数。

我所拥有的示例:

代码语言:javascript
复制
sqc.compileQuery(new FileReader(xq.getCurrentXQueryFile())).run(dqc, new StreamResult(new FileWriter(xq.getResultsFile(), true)), props);

sqc是一个StaticQueryContext。true是FileWriter构造函数使用追加模式的可选参数。

因此,正如我所说的,它仍然在每个"compileQuery“上重写文件。我试着检查源代码,但它对我的水平来说真的太重了…

因此,如果有人知道是否有一种“干净”的方法在一个文件中获得多个结果,谢谢!:-)

PS :我知道每次启动创建一个文件,然后在一个文件中获取所有文件的内容是很容易的,但这并不是我所说的“干净”。

EN

回答 2

Stack Overflow用户

发布于 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。

票数 0
EN

Stack Overflow用户

发布于 2018-08-17 18:35:53

实际上,它是Saxon 9,而不是8,我找到了问题所在。在附加模式中,标签“

代码语言:javascript
复制
props.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

现在我有了其他问题,但与api无关,我的xml没有针对sax解析器进行验证(没有根node...as我从xquery添加了两次根节点,解析器想要一个真正的根节点,但我会处理它。;-))。

再次感谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51880306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档