【问题标题】:Combine many xml files into one big file将多个xml文件合并为一个大文件
【发布时间】:2021-05-28 10:32:15
【问题描述】:

我正在尝试将 Doxygen xml 输出发送到 graphviz,但我有超过 1000 多个 xml 文件要组合,我不知道如何在 Windows 上执行此操作。我已经为 XSLT 处理安装了 Saxon,一旦它们都在一个文件中,但我不知道如何组合这些文件。

据我了解,我的管道将如下所示:

Doxygen XML 输出 -> 合并到单个 XML(如何)-> 通过 Saxon 的 XSLT 流程 -> 转换为 DOT -> 通过 graphviz 输出 -> 派对

Doxygen 已经输出了 XML,我有一个在合并 java -jar c:\saxon\saxon9he.jar -s:myinput.xml -xsl:myxslt.xslt -o:myoutput.xml 后使用 saxon 的命令,还有无穷无尽的用于 DOT 转换的实用程序。 但是如何合并数百个 XML 文件?

我可以运行批处理文件/脚本或 python 脚本或 windows 程序的命令作为解决方案。我正在寻找可以在连续管道中工作的东西,以供将来使用另一组可能数百个文件。我的最终目标是打印出从 graphviz 创建的大图表,作为 UML 映射的替代品,这很难找到解决方案(Doxygen 正在阅读 C 代码)。

【问题讨论】:

    标签: xml windows doxygen


    【解决方案1】:

    使用 XPath collection() 函数。您可以按照您的建议在管道中的单独步骤中进行合并,也可以将其合并到您的主样式表中。例如:

    <xsl:variable name="merged">
      <xsl:copy-of select="collection('file:///c:/data/dir/?select=*.xml;recurse=yes')"/>
    </xsl:variable>
    

    【讨论】:

    • 事实证明,我无法阅读。我在 Doxygen 手册中读过 If you prefer one big XML file you can combine the index and the other files using the XSLT file combine.xslt 但不知道如何。阅读您所写的内容让我想知道为什么他们没有那个,而他们在所述文件中做到了。他们在该文件中也有If you have xsltproc you could use: xsltproc combine.xslt index.xml &gt;all.xml,所以我已经在我之前发布的撒克逊命令中运行它。我有一些文件编码错误要修复,然后我可以对其进行全面测试。
    • 单个文件看起来不错,现在我正在考虑转换为 DotML,以便将图形转换为 graphviz。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多