xml - 将 docX 转换为自定义 XML

标签 xml xslt openxml docx docx4j

我一直在尝试将我的 docX 文件转换为我定制的 XML。我的用户希望将他们的数据转换为这种 XML,以便在他们的 Web 应用程序中更轻松地查询内容,并且他们希望输入来自他们的 docX。

我曾尝试在 Java 中寻找转换器 API,但似乎没有一个符合我的要求。我查看了 docx4j,但意识到它只能转换为 HTML 和 PDF。我在想是否存在一个转换器 API,我可以向其输入,比如说,一个中间翻译器 (XSLT),并且输出将是我的自定义 XML,其中包含来 self 的 docX 的数据。

有现成的工具吗?如果没有,关于我在编码我自己的转换器时必须采取的方法的任何建议,例如从 openXML,在自定义 XML 之前先转换为 XSL-FO?

很想听听社区的意见。

非常感谢。

最佳答案

docx4j 可用于通过 XSLT 将 OpenXML 转换为任意 XML。

假设 Templates xslt 和 javax.xml.transform.stream.StreamResult result,你会做像这样:

        WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(new java.io.File(inputfilepath));
        MainDocumentPart mdp = wordMLPackage.getMainDocumentPart();

        // DOM document to input to transform
        org.w3c.dom.Document doc = XmlUtils.marshaltoW3CDomDocument(
                mdp.getJaxbElement() );     

        XmlUtils.transform(doc, xslt, null, result);

但是,如果您只想转换为 XML,那么 docx4j(以及与此相关的 Apache POI)就有些过分了。你可以只使用 OpenXML4J直接。

不过,通过 XSLT 进行转换是否是最佳方法取决于您的目标 XML 是面向文档的还是面向数据的。

如果它是面向文档的,XSLT 是一个很好的方法。

如果它是面向数据的,您可能需要考虑内容控制数据绑定(bind)。 (还有另一种方法,称为 customxml,但如果您依赖 Word 进行编辑,i4i 专利闹剧可能会使该方法不可取)

关于xml - 将 docX 转换为自定义 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5830920/

相关文章:

c# - LINQ to XML 创建复杂的 XML 文件

python - 使用python查找xml中的元素

java - 将 XML 属性的值限制为不同属性/元素的值

javascript - 排除 xml 节点

时间:2019-05-17 标签:c#openxmlexcelstylesheetbordererror

Android 和 XML map

xslt - XSL(T) 当前/上一个/下一个

xml - 使用 xslt 获取节点的命名空间

openxml - 如何使用 OpenXml SDK 2.0 更改 Word 2007 中内容控件的内容?

c# - 导出到 excel 数据时出错 : ' ' , 十六进制值 0x07,是使用 c# 的无效字符