Java 将ODT转换为单个XML文件
我知道标准定义了ODT文件的两个版本: -一个是不同文件的存档,即meta.xml、content.xml等, -第二个是一个包含所有数据的大XML文件。 (我从上面知道) 后一个版本更适合处理,但遗憾的是,它不是由OpenOffice生成的 问题是:Java 将ODT转换为单个XML文件,java,xml,odf,odt,Java,Xml,Odf,Odt,我知道标准定义了ODT文件的两个版本: -一个是不同文件的存档,即meta.xml、content.xml等, -第二个是一个包含所有数据的大XML文件。 (我从上面知道) 后一个版本更适合处理,但遗憾的是,它不是由OpenOffice生成的 问题是: 您知道任何过滤器、转换器或任何东西可以帮助我将归档版本中的ODT文件转换为单个XML文件吗?最好是Java类。Open Office和Libre Office都可以生成“一个大XML”格式的ODT文件。它们被称为“平面ODT”文件 打开ODT文件
您知道任何过滤器、转换器或任何东西可以帮助我将归档版本中的ODT文件转换为单个XML文件吗?最好是Java类。Open Office和Libre Office都可以生成“一个大XML”格式的ODT文件。它们被称为“平面ODT”文件
打开ODT文件并使用“另存为…”。从那里,您可以将文件格式更改为“平面ODT”。我通过生成XSLT样式表将ODT源文件转换为一个“或多或少”与标准兼容的XML文件来解决这个问题。下面是代码
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0">
<xsl:param name="meta.file" select="'meta.xml'" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="office:document-content">
<office:document>
<xsl:copy-of select="@*" />
<xsl:variable name="meta" select="document($meta.file)/office:document-meta/office:meta" />
<xsl:copy-of select="$meta" />
<xsl:apply-templates />
</office:document>
</xsl:template>
</xsl:stylesheet>
然后,您可以使用文本编辑器打开此文件,或者只使用cat,您将看到格式化的xml源代码。您确定有办法使用LibreOffice实现这一点吗?我在任何地方都看不到“平面ODT”。@Stéphanelant:是的,LibreOffice支持平面ODT文件。例如,说“从头写”ODF导入和导出文件从java到C++的过滤速度大大提高。谢谢。胡尔,但是你知道如何保存这个格式的文件吗?就像其他文件格式:保存->选择“opdOctupTeX(平面XML)(.FoDT)”作为右下角的格式。