首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Java将XML拆分成多个文档

用Java将XML拆分成多个文档
EN

Stack Overflow用户
提问于 2014-07-11 20:04:04
回答 3查看 315关注 0票数 1

我有大量的XML文档,如下所示:

代码语言:javascript
运行
复制
<root xmlns="urn:foo" xmlns:bar="urn:bar">
  <Entity>
    <bar:field>Data</bar:field>
    <bar:other>Other data</bar:other>
    <bar:more>More data</bar:more>
  </Entity>
  <Entity>
    <bar:field>Data</bar:field>
    <bar:other>Other data</bar:other>
    <bar:more>More data</bar:more>
  </Entity>
</root>

每个根节点下有多达1000个实体节点。如果可能的话,我想将每个文件分割成自己的文档,而不写入磁盘。

我熟悉XSLT2.0,并且知道我可以使用xsl:result使用Saxon完成这一任务,但在所有情况下都会写入磁盘,不是吗?是否有任何方法以字符串的形式截取输出?我使用的是Java,原始数据是REST调用的结果,所以它是作为一个InputStream传入的,我目前正在编写一个字符串。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-22 08:43:29

Saxon 9允许您提供带有http://saxonica.com/documentation/index.html#!javadoc/net.sf.saxon.lib/OutputURIResolverhttp://saxonica.com/documentation/index.html#!javadoc/net.sf.saxon/Controller@setOutputURIResolver方法,然后该方法可以以自定义的方式处理任何result-document,例如,将其写入内存中的StringWriter而不是磁盘上的文件。

票数 1
EN

Stack Overflow用户

发布于 2014-07-12 00:25:16

如何将其解析为文档,在其上运行/root/Entity Xpath表达式,循环遍历NodeSet,并将每个节点采用为一个新的空文档?

票数 1
EN

Stack Overflow用户

发布于 2014-07-11 20:42:48

您可以编写一个简单的XSLT2.0转换,并在Java程序中对原始文件运行无数次,并在Java程序中捕获Saxon的标准输出。

如何从Java调用另一个程序:使用ProcessBuilder并运行流程。如有要求,请提供详细资料。

另一种选择是使用JAXB创建对象树、提取实体元素、创建一个小对象树并将其传递给字符串。这样会快得多。

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

https://stackoverflow.com/questions/24705657

复制
相关文章

相似问题

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