当前位置: 首页 > news >正文

关于Java EE应用中xml解析类的问题

在Java EE应用中常遇到针对xml文件的处理,而针对这种处理有JDK自带的类,开源组件自带的实现类。 由于从JDK1.8移植到JDK11以上 JDK默认不带一些类,从weblogic、websphere、tomcat移植到TongWeb上,默认的xml解析类不同导致一些解析问题。

如下把一些常用的xml解析类列出来,供大家参考,当出现xml解析问题时,要根据实际应用调整。

xml解析参数

#JDK1.8默认实现类

-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl

#开源xerces.jar实现类

-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl

#JDK1.8默认实现类

-Djavax.xml.stream.XMLInputFactory=com.sun.xml.internal.stream.XMLInputFactoryImpl

#开源实现类

-Djavax.xml.stream.XMLInputFactory=com.ctc.wstx.stax.WstxInputFactory

-Djavax.xml.stream.XMLInputFactory=com.bea.xml.stream.MXParserFactory

#JDK1.8默认实现类

-Djavax.xml.stream.XMLOutputFactory=com.sun.xml.internal.stream.XMLOutputFactoryImpl

#开源实现类

-Djavax.xml.stream.XMLOutputFactory=com.ctc.wstx.stax.WstxOutputFactory

#JDK1.8默认实现类

-Djavax.xml.bind.JAXBContext=com.sun.xml.internal.bind.v2.ContextFactory

#开源实现类

-Djavax.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory

#weblogic默认实现类。 xml的双引号会转义成

-Djavax.xml.bind.JAXBContext=org.eclipse.persistence.jaxb.JAXBContextFactory

#jakarta命名空间的

-Djakarta.xml.bind.JAXBContext=org.glassfish.jaxb.runtime.v2.JAXBContextFactory

#JDK1.8默认实现类

-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

#开源实现类

-Djavax.xml.parsers.SAXParserFactory=com.ctc.wstx.sax.WstxSAXParserFactory

#JDK1.8默认实现类

-Djavax.xml.datatype.DatatypeFactory=com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl

#开源实现类

-Djavax.xml.datatype.DatatypeFactory=org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl

#开源实现类

-Djavax.xml.soap.SAAJMetaFactory=com.sun.xml.messaging.saaj.soap.SAAJMetaFactoryImpl

#JDK1.8默认值

-Djavax.xml.soap.SAAJMetaFactory=com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl

通常xml解析实现类的优先级由高到低依次为:

1. 以-D参数指定的类为最优先。

2. 其次,若无-D参数,则以jar文件META-INF/services目录下设置的为准,如图。

3. 若无以上配置,则以代码中指定为准。

案例:

应用在TongWeb下报错如下:

Caused by: jakarta.xml.bind.JAXBException: Exception Description: Invalid XmlElementRef on property rPrOrAliasOrLock on class org.docx4j.wml.SdtPr. Referenced Element not declared. at com.tongweb.persistence.jaxb.JAXBContext$TypeMappingInfoInput.createContextState(JAXBContext.java:1151) at com.tongweb.persistence.jaxb.JAXBContext.<init>(JAXBContext.java:186) at com.tongweb.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:153) at com.tongweb.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:140) at com.tongweb.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:100) at com.tongweb.persistence.jaxb.JAXBContextFactory.createContext(JAXBContextFactory.java:90) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:262) at jakarta.xml.bind.ContextFinder.newInstance(ContextFinder.java:249) at jakarta.xml.bind.ContextFinder.find(ContextFinder.java:456) at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:656) at jakarta.xml.bind.JAXBContext.newInstance(JAXBContext.java:599) at com.glodon.ureport.customize.WordDefaultStyle.setTheme4NoItalic(WordDefaultStyle.java:59)

从异常上看是应用 jakarta.xml.bind.JAXBContext 的实现类找到了TongWeb自带的 com.tongweb.persistence.jaxb.JAXBContextFactory 导致解析xml文件出错,这时可以增加参数 -Djakarta.xml.bind.JAXBContext=com.sun.xml.bind.v2.ContextFactory 或 com.sun.xml.internal.bind.v2.ContextFactory来解决问题。

http://www.jsqmd.com/news/611690/

相关文章:

  • 使用Phi-4-mini-reasoning优化算法逻辑:以LSTM时间序列预测为例
  • MiniCPM-o-4.5-nvidia-FlagOS进阶:使用Matlab进行模型输出数据的可视化分析
  • 2026年质量好的仿棉天鹅绒/金丝绒天鹅绒/经编天鹅绒/平板天鹅绒公司口碑哪家靠谱 - 品牌宣传支持者
  • 亲测8款AI写论文神器,维普查重一把过,零AIGC痕迹 - 麟书学长
  • JointJS部署与打包终极指南:从开发到生产环境的完整实践
  • WeKnora新手必看:无需代码,三步创建属于你的即时知识问答系统
  • 使用Phi-4-mini-reasoning进行软件测试用例智能生成与面试题解析
  • FFmpeg在RK3588上的完整移植教程:从交叉编译到CMake集成
  • Flutter Engine热重载原理:开发效率提升的黑科技
  • Hypersistence Utils数组类型深度解析:PostgreSQL ARRAY到Java List的完美映射
  • 2026年昆山执行案件口碑好的律师推荐及选择建议 - 品牌排行榜
  • 百度网盘直连地址解析工具:告别限速的终极方案
  • Pixel Script Temple Node.js后端服务部署与监控脚本生成
  • 终极指南:Kanboard监控告警配置 - 打造异常情况及时响应机制
  • EcomGPT-7B电商数据爬虫实战:Python自动化采集与清洗方案
  • 2. ES6中数组新增了哪些扩展?
  • 3个步骤实现BetterGenshinImpact多账号协同管理:高效掌控多角色游戏体验
  • IOSSecuritySuite 运行时Hook检测:Flex等工具的克星
  • OpenClaw对话式编程:千问3.5-27B辅助Python脚本调试
  • 在Ubuntu 22.04上为你的J-Link适配OpenOCD:从源码编译到成功连接实战记录
  • 3大场景解锁显卡潜能:NVIDIA Profile Inspector开源工具性能调优实战指南
  • Mercure 认证授权终极指南:如何构建企业级安全的实时通信系统
  • 加密货币数据标准化:Cryptofeed如何统一50+交易所的数据格式
  • NVIDIA Profile Inspector:开源显卡性能调优工具,游戏玩家与创作者的深度优化解决方案
  • 5分钟掌握哔哩下载姬Downkyi:免费批量下载B站视频的完整教程
  • Symfony Translation Contracts终极指南:避免常见的10个国际化陷阱
  • CH343芯片驱动安装全攻略:从Windows到Linux再到MacOS,一篇搞定所有系统
  • 十大AI写作工具迎来专业测评,AIGC论文助手从核心功能维度切入,深度解析各工具的实战表现与性能差异。
  • ChatTTS语音导航优化:车载系统更人性化播报
  • 2026护发精油哪个牌子好?实测口碑产品推荐 - 品牌排行榜