【问题标题】:Converting MPP files to MS XML format in Python using MPXJ使用 MPXJ 在 Python 中将 MPP 文件转换为 MS XML 格式
【发布时间】:2021-06-02 01:14:40
【问题描述】:

我正在尝试使用 MPXJ 库和 Jpype 将 MPP 文件转换为 MS XML 格式

def convert(inputFile, outputFile):
   reader = ProjectReaderUtility.getProjectReader(inputFile)
   project = ProjectFile()
   project = reader.read(inputFile)
   writer = ProjectWriter
   writer = ProjectWriterUtility.getProjectWriter(outputFile)
   writer.write(project, outputFile)

如果我尝试转换为 json 格式,这会很好。但是,总是存在与 xml 文件相关的错误。我收到与 java xml 库相关的错误

java.io.IOException: java.io.IOException: javax.xml.bind.JAXBException: 
Implementation of JAXB-API has not been found on module path or classpath.
 with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]

任何人都可以帮助解决这个问题。 我正在使用带有 jdk-15.0.2 的 Python 3.8

【问题讨论】:

  • 您使用的是什么版本的 MPXJ?
  • ... 作为后续行动,您如何配置 JPype 以获取 MPXJ jar 及其依赖项?
  • 我正在使用 MXPJ 版本 9.0.0 对于配置我已经加载了 jar 文件 import jpype import jpype.imports from jpype.types import * from collections import defaultdict import sys jpype.startJVM(jpype.getDefaultJVMPath (), "-ea") jpype.addClassPath("mpxj-9.0.0.jar") jpype.addClassPath("poi-5.0.0.jar") jpype.addClassPath("commons-math3-3.6.1.jar" ") jpype.addClassPath("commons-collections4-4.4.jar") jpype.addClassPath("jcl-over-slf4j-1.7.30.jar") jpype.addClassPath("slf4j-api-1.7.30.jar") jpype.addClassPath("SparseBitSet-1.2.jar") jpype.addClassPath("commons-codec-1.15.jar")
  • jpype.addClassPath("rtfparserkit-1.16.0.jar") jpype.addClassPath("jaxb-api-2.3.1.jar")
  • Java(TM) SE 运行时环境(内部版本 1.8.0_281-b09)Java HotSpot(TM) 64 位服务器虚拟机(内部版本 25.281-b09,混合模式)

标签: java python python-3.x jpype mpxj


【解决方案1】:

好吧,这是受 Jon Illes 响应启发的错误依赖。我使用的 jaxb-api 不是正确的依赖项。检查依赖列表后,我了解到所需的正确包是 jaxb-runtime。下载后脚本就可以运行了。

感谢 Jon 的及时响应并指导解决方案

【讨论】:

  • 嗨,Hassan,我受到您的问题的启发,为此创建了一个包,希望它能让 MPXJ 更容易从 Python 中使用。 pypi.org/project/mpxj
  • 嗨 Jon,这太棒了,我很乐意为它做出贡献(如果需要进一步开发),因为我自己已经启动了一个开源包来仅解析 XER 文件。它仍处于早期阶段,但确实有帮助。 github.com/HassanEmam/PyP6Xer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-30
  • 2020-12-20
  • 2012-12-20
  • 1970-01-01
  • 2020-07-22
  • 2016-06-08
  • 2021-04-21
相关资源
最近更新 更多