更改jdk的默认xml解析器

Spark-Sql源码解析之一 引言 1.1 Demo 以一个Spark-Sql的例子开始: public class TestSparkSql {     public static void main(String[] args) {         Logger log = Logger.getLogger(TestSparkSql.class);         System.setProperty 阅读详情

在命令行下运行java程序;

设置classpath=.;E:\normal\dev\j2ee\xml\xerces\xerces-2_9_1\xercesImpl.jar
(或E:\normal\dev\j2ee\xml\xerces\xerces-2_9_1\xercesImpl.jar;.)

执行:
javac DOMStudentsInfo.java
java DOMStudentsInfo

无论是否存在jaxp.properties文件都可运行,

jaxp.properties内容为:
javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl

运行结果为:
E:\MyDoc\dev\Temp Pro\eclipse\lesson3\src>java DOMStudentsInfo
JAXP: find factoryId =javax.xml.parsers.DocumentBuilderFactory
JAXP: found jar resource=META-INF/services/javax.xml.parsers.Document
uilderFactory using ClassLoader: sun.misc.Launcher$AppClassLoader@198
1f
JAXP: found in resource, value=org.apache.xerces.jaxp.DocumentBuilder
actoryImpl
JAXP: created new instance of class org.apache.xerces.jaxp.DocumentBu
lderFactoryImpl using ClassLoader: sun.misc.Launcher$AppClassLoader@1
821f
DocumentBuilderFactory: org.apache.xerces.jaxp.DocumentBuilderFactory
mpl
DocumentBuilder: org.apache.xerces.jaxp.DocumentBuilderImpl
Name: 张三
Age: 20
---------------
Name: 李四
Age: 21
---------------


ps:
1. 修改环境变量后必需重新打开cmd窗口!
2. DOMStudentsInfo.java 内容为:

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.*;
import org.xml.sax.SAXException;


public class DOMStudentsInfo {

public static void main(String[] args) {
System.setProperty("jaxp.debug","TRUE");
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
System.out.println("DocumentBuilderFactory: "+dbf.getClass().getName());
try {
DocumentBuilder db =dbf.newDocumentBuilder();
System.out.println("DocumentBuilder: "+db.getClass().getName());
Document doc =db.parse(new File("Students.xml"));
NodeList nl =doc.getElementsByTagName_r("student");
int len =nl.getLength();
for(int i=0;i<len;i++)
{
   Element ele =(Element) nl.item(i);
   Node ndName =ele.getElementsByTagName_r("name").item(0);
   Node ndAge =ele.getElementsByTagName_r("age").item(0);
   
   String strName =ndName.getFirstChild().getNodue();
   String strAge =ndAge.getFirstChild().getNodue();
   
   System.out.println("Name: "+strName);
   System.out.println("Age: "+strAge);
   System.out.println("---------------");
}
}
catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e)
{
   // TODO Auto-generated catch block
   e.printStackTrace();
} catch (IOException e)
{
   // TODO Auto-generated catch block
   e.printStackTrace();
}
}

}

3.然而在eclipse3.5.1下,不管是否正存在jaxp.properties以及是否设置了classpath=E:\normal\dev\j2ee\xml\xerces\xerces-2_9_1\xercesImpl.jar;. eclipse运行结果都为:

JAXP: find factoryId =javax.xml.parsers.DocumentBuilderFactory
JAXP: loaded from fallback value: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
JAXP: created new instance of class com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl using ClassLoader: null
DocumentBuilderFactory: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
DocumentBuilder: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl
Name: 张三
Age: 20
---------------
Name: 李四
Age: 21
---------------

但是,当eclipse导入了xercesImpl.jar,则总是输出:

JAXP: find factoryId =javax.xml.parsers.DocumentBuilderFactory
JAXP: found jar resource=META-INF/services/javax.xml.parsers.DocumentBuilderFactory using ClassLoader: sun.misc.Launcher$AppClassLoader@19821f
JAXP: found in resource, value=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
JAXP: created new instance of class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl using ClassLoader: sun.misc.Launcher$AppClassLoader@19821f
DocumentBuilderFactory: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
DocumentBuilder: org.apache.xerces.jaxp.DocumentBuilderImpl
Name: 张三
Age: 20
---------------
Name: 李四
Age: 21
---------------


-----------------------------------------------------
总结:
1. 使用eclipse时若需替换jdk默认的xml解析器,则中需要导入相应的工厂实现。
2. 使用命令行执行java程序时,要在环境变量下包含工厂实现文件的绝对路径。
xerces.jar 用于XML解析的Java解析工具,是Apache的开源项目 立即下载

相关推荐

正点原子ATK-LORA-01无线串口代码移植+STM32F103C8T6(标准库)

目录 一、ATK-LORA-01无线串口资料 二、代码移植 1.分析 (1)usart3(也可以是其他的串口)用于接收数据的串口 usart.h (2)time3(也可以是其他的定时器)用于时序的设置 (3)lora.c 三、演示 1.主机(发送方) (1)主机接线 (2)主机代码(发送方) (3)主机实物 插上无线串口通电即可发送​ 2.从机(接收方) (1)从机接线(LORA与主机相同) (2)从机代码(接收方) (3)从机实物 接上TTL和LORA并通电即...

m0_56942354的博客 8968

javax.xml.parsers.FactoryConfigurationError(异常分析)

引发这个异常有很多原因这边列举两种:   1 .tomcat运行时抛出的异常 :   异常具体为 [java] view plain copy  print? "http://lib.csdn.net/base/java" class='replace_word' title="Java 知识库" target='_blan

HD243608836的博客 4118

【YOLO 系列】基于YOLO V8的智能车载交通标志识别系统【python源码+Pyqt5界面+数据集+训练代码】

本文详细介绍了基于YOLO V8构建智能车载交通标志识别系统的完整流程。从环境搭建、数据集准备、模型训练到PyQt5图形界面开发,提供了Python源码和实战代码,帮助开发者快速实现高精度、实时的交通标志检测应用,提升驾驶辅助系统的开发效率。

wdx012345的博客 967

如果替换JDK缺省的XML解析器工厂实现类

为了替换JDK缺省的XML解析器工程实现类,我们需要在JRE/lib建立endorsed目录,然后把包含XML工厂解析器的jar文件放到目录中,比如apache xerces的就是xercesImpl.jar 或者假设xercesImple.jar 在c:/jar中则利用 java -Djava.endorsed.dirs=c:/jar  [程序名]

我的世界我的梦 1085

手把手教你:在openEuler 22.03上离线搞定OpenSSH 9.8升级(CentOS 7.9通用)

本文详细介绍了在openEuler 22.03和CentOS 7.9系统上离线升级OpenSSH 9.8的完整流程,包括准备工作、离线包获取、安装步骤、服务管理及回滚方案。特别针对无外网环境的企业服务器,提供安全可靠的离线升级解决方案,帮助运维人员有效提升系统安全性。

weixin_30682415的博客 192

COMSOL实现裂缝性储层油水两相流模拟的关键技术

多孔介质中的流体流动模拟是油气藏开发的核心技术,其基本原理基于达西定律和质量守恒方程。在裂缝性储层中,离散裂缝网络与基质系统的耦合流动带来了特殊的数值挑战。通过COMSOL Multiphysics平台实现的多物理场耦合技术,可以精确模拟油水两相在复杂裂缝系统中的渗流行为。该技术采用Level Set方法表征裂缝几何形态,结合自适应网格生成技术解决狭窄裂缝的网格剖分难题,并创新性地引入Bang-Larsen毛管压力滞后模型,显著提高了采收率预测精度。这些方法在致密油藏开发、水驱优化等工程实践中具有重要应用价

weixin_34005090的博客 229

xercesImp和jdk里jar包冲突问题

1.项目组在实施过程中遇到 org.apache.xercer.dom.DocumentImpl.getXmlStandalone()   2.后来发现是xercesImpl里面报错,经过baidu说是和jdk里面的包相互冲突了, 解决方法:因为项目是基于maven 将调用的地方加入exclusion。 &lt;dependency&gt;   &lt;groupId&gt;comm...

fdg277137601的专栏 3495

【毕设】基于LoRa的物联网控制器:从原理图到PCB的完整硬件设计指南

本文提供了一份完整的基于LoRa的物联网控制器硬件设计指南,涵盖从系统框图、原理图设计到PCB布局布线的全流程。详细讲解了电源电路、单片机最小系统、信号接口以及LoRa无线模块等核心模块的设计要点与抗干扰技巧,并分享了实用的调试心得,旨在帮助电子、物联网专业学生顺利完成毕业设计,掌握低功耗远距离物联网节点的硬件开发实践。

weixin_42126677的博客 307

Java中XML文档的解析问题(已解决)

这两天在练习Struts1.2+Hibernate3.1在MyEclipse5.1下的编程。Struts及Hibernate这一年来断断续续地基本语法及核心技术也熟悉了不少,就找了个RSS在线阅读的实例练手。中间就遇到了一个对RSS XML文档进行解析的问题。核心解析代码如下:public static List parseFeed(Stri

cq_jone的专栏 1101

YOLO26涨点改进| TGRS 2026 | 独家自研创新、检测头改进篇| AHATHead自适应混合注意力检测头,二次创新,强化特征表达与目标判别能力,适合遥感小目标检测、小目标检测有效涨点

🔥本文提出了一种改进YOLO26模型的AHATHead自适应混合注意力检测头,通过融合全局与局部注意力机制增强特征表达能力。该方法采用动态权重分配策略,在预测阶段自动调整关键区域与通道特征权重,有效提升小目标和密集场景的检测性能。实验表明,AHATHead在保持较高推理效率的同时,显著提高了目标定位精度与类别判别能力。文章详细介绍了模块结构、实现原理和代码集成步骤,并提供了两种改进配置方案(yolo26_AHATHead.yaml和yolo26_RFHA-YOLO-AHATHead.yaml)

Ai缝合怪、助力小伙伴高效发论文 159

uniapp(全端兼容) - 最新详细实现双色球开奖走势图功能组件,uni-app红球走势图/蓝球走势图,解决双色球 “蓝球连线“ 问题,双色球效果及用线连接每个号码详细教程(同样适用于彩票开奖走势图

uni-app,双色球,安卓app,苹果app,微信小程序,移动端,H5网页,手机网站,微信小程序、支付宝小程序,手机app端,nvue,红球走势,蓝球走势,连线,uniapp(vue):js实现双色球开奖走势图带连线,vue2,vue3,uniApp双色球组件插件,uniapp如何实现双色球走势图和连线,彩票走势图,前端 Vue实现彩票走势图,详细示例,走势图,彩票项目,绘制股票走势图,前端 JS实现彩票开奖走势图 连线,Uniapp有没有双色球的页面代码,红球蓝球的走势图如何做,双色球红球和值尾走势图,

✅ 精选推荐文章 3346

xml解析器

为了让我们的应用程序不依赖于具体的解析器,让我们以统一的接口来访问XML文档,Sun公司开发了JAXP(Java API For XML Processing)API。    JAXP没有扩充解析器新的功能,它是对解析器的一个封装,使开发人员能够独立于具体的解析器,这样我们就可以在应用程序中任意更换解析器,而不用更改应用程序代码。现在主流的解析器都支持DOM和SAX,所以JAXP也都支持。

star.dragon 475

HyperLynx(三十一)高速串行总线仿真(三)

(5)选择 “File”→ “Open Touchstone”,打开路径 C:\Adv_HL_Tmg\SERDES_Interface\models,选中connector.s4p,单击打开,如图所示。接下来,找出将要分配模型的S参数连接。(12)单击“Assign”按钮,选择模型类型为“Touchstone models”,在库中选择“connector.s4p”,如图所示。(14)单击“OK”按钮,选中“connector.s4p”这一行,单击“Connection Editor”按钮,如图所示。

小幽余生不加糖 3367

适用于Java的最佳XML解析器[关闭]

I need to read smallish (few MB at the most, UTF-8 encoded) XML files, rummage around looking at va

w36680130的博客 339

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

通往Groovy 3.0的漫漫长路,以及他们新改进的解析器

Apache Foundation已发布了Groovy的3.0版,其中包括以下新功能:新的解析器,程序包名称空间更改,增强的Elvis运算符以及对Java语法的支持,例如do / while循环,数组初始化,lambda和方法引用。Groovy 3.0需要使用JDK9 +来构建应用程序,并且Java Runtime Environment(JRE)的最低受支持版本是JDK8。 Groovy 3.0引入了一个新的Groovy解析器,代号为Parrot。它的名称源于它打算继承现在继承的Antlr2解析器的“pa

zenglintao的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java html解析成xml文件_在Java中解析包含HTML实体的XML文件,而无需更改XML

我必须解析一些Java文件,这些文件有时候是无效的,它包含HTML实体,例如& mdash;& gt;等等。我理解正确的处理方法是在解析之前向XML文件添加适当的实体声明。但是,我无法做到这一点,因为我无法控制这些XML文件。是否有某种回调,我可以覆盖在Java XML解析器遇到这样一个实体时被调用?我没有能够在API中找到一个。我想用:DocumentBuilderFactory...

weixin_39717865的博客 362

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

XML配置文件的读取处理

Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了?当然不是,现在已经有一个新趋势,java程序的配置文件都开始使用XML格式,以前是使用类似windows的INI格式.(Java中也有Propertiesy这样的类专门处理这样的属性配置文件).使用XML作为Java的

龙的天空 970

XML第十六讲:SAX方式解析XML文档深入详解

前面我讲到了两种解析XML的方法,一种是DOM解析,另外一种是SAX解析,DOM解析我们已经剖析过了,现在我们来讲一下SAX解析 1. SAX(Simple APIs for XML),面向XML的简单APIs。 2. 比较一下两种解析方式的不同    使用DOM解析XML时,首先将XML文档加载到内存当中,然后可以通过随机的方式访问内存中的DOM树;SAX是基于事件而且

AHuier_Techblog :如果我不在写代码,你就 @me 2455

怎样读取和处理XML的配置文件

Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了? 当然不是,现在已经有一个新趋势,java程序的配置文件都开始使用XML格式,以前是使用类似windows的INI格式.(Java中也有Propertiesy这样的类专门处理这样的属性配置文件).使用XML作为Java的配

sunshinegeorge的专栏 590

XML的两种解析模型

1.      概述 Java语言和XML数据格式都被认为是过去数十年中最为重要的IT技术之一,Java为编程提供了一种与平台无关的语言,而XML则为数据交换提供了一种与平台无关的表现形式。XML和Java常常被认为是最完美的组合,使用XML的半结构化模型描述各种各样的业务数据、表达复杂的业务信息,使用Java语言来实现独立于平台的、易于处理的面向对象的应用软件解决方案。 那么Java语言中...

passport_pengxing的专栏 372

Jackson,最牛掰的 Java JSON 解析器

在当今的编程世界里,JSON 已经成为将信息从客户端传输到服务器端的首选协议,可以好不夸张的说,XML 就是那个被拍死在沙滩上的前浪。很不幸的是,JDK 没有 JSON 库,不知道为什么不搞一下。Log4j 的时候,为了竞争,还推出了 java.util.logging,虽然最后也没多少人用。Java 之所以牛逼,很大的功劳在于它的生态非常完备,JDK 没有 JSON 库,第三方类库有啊,还挺不错...

十指波课堂的博客 1426

java删除XML_使用Java解析器删除XML节点

小编典典替代DOM方法另外,您可以使用JDK中的XPath功能来查找值“ 13”的“ B”元素,然后从其父级中删除它,而不是对XML文档进行蛮力遍历:import java.io.File;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import j...

weixin_30349485的博客 703

java 读取xml删除xml节点_使用java解析器删除XML节点

替代DOM方法或者,您可以使用JDK中的XPath功能来查找值为“13”的“B”元素,然后将其从其父项中删除,而不是进行强力遍历XML文档:import java.io.File;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax....

weixin_34052714的博客 643

XML配置文件的读取处理(转)

XML配置文件的读取处理板桥里人 jdon.com 2002/2Java和XML是黄金组合,网上已经有很多文章介绍,XML作为电子商务中数据交换,已经有其不可替代的作用,但是在平时系统开发中,我们不一定都用到数据交换,是不是无法使用XML了?当然不是,现在已经有一个新趋势,java程序的配置文件都开始使用XML格式,以前是使用类似windows的INI格式.(Java中也有Proper

hyde82的专栏 995

java操作xml解析技术_JAVA高手解析XML配置文件的读取操作

在apache的XML项目组中,目前有Xerces Xalan Cocoon几个开发XML相关技术的project.Tomcat本身使用的是 Sun 的 JAXP,而其XSL Taglib project中使用Xerces解析器。好了,上面都是比较烦人的理论问题,还是赶快切入XML的配置文件的读取吧。在我们的程序中,通常要有一些根据主机环境确定的变量。比如数据库访问用户名和密码,不同的主机可能设置...

weixin_31140863的博客 113
上一篇: JAVA XML 那些事
下一篇: Java XML分析技术: StAX, SAX, DOM, DOM4j, JDOM
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值