更改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的开源项目 立即下载

相关推荐

UE4虚拟现实实习总结---蓝图中的常用交互事件|人物行走|物体移动|动态触发|材质改变

这周是ue4实习周,老师给我们的任务就是基于中学物理和化学实验的虚拟实验室,要有交互事件,后期可以链接vr手柄进行操作。 但是实习开始老师影都没了,全靠自己学习。感觉自己学习了不少东西,这里就来总结一下!顺便感叹一下,ue4好玩又强大! 以下主要介绍蓝图中的几种交互事件1.新建游戏角色并且进行角色行走旋转,2.如何控制物体移动旋转,3.如何控制物体材质动态变化 大家可以举一反三,作出更好的作品 1.新建游戏角色并且进行角色行走旋转 步骤 在刚刚新建的文件夹中鼠标右击新建蓝图类,然后分别创建以下:chara

weixin_43902063的博客 6124

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

EDF Browser使用说明和技巧

edf browser使用说明和一些小技巧

Erhu_666的博客 8333

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

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

我的世界我的梦 1085

OAK-D-Pro深度解析:从硬件融合到全天候SLAM实战

本文深度解析OAK-D-Pro硬件架构及其在SLAM领域的实战应用。作为SLAM的"六边形战士",OAK-D-Pro融合主动双目摄像头、结构光投射器、6轴IMU等传感器,实现全天候稳定工作。通过实测数据展示其在弱纹理环境、动态光照等复杂场景下的卓越表现,并提供SLAM实战技巧与开发指南,帮助开发者快速部署高效SLAM解决方案。

weixin_27244795的博客 183

电磁仿真新手必看:如何用CST Studio Suite 2023完成第一个PCB辐射仿真?

本文详细解析了如何使用CST Studio Suite 2023进行PCB辐射仿真,适合电磁仿真新手快速上手。从工程准备、求解器配置到端口设置和后处理技巧,全面覆盖三维全波电磁场仿真软件的核心操作步骤,帮助工程师精准预测和解决PCB电磁辐射问题。

y7z8a9的博客 733

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

Windows Server 2019/2022 RDS 授权实战:3步激活许可证服务器,解决120天宽限期问题

本文详细介绍了Windows Server 2019/2022 RDS授权实战,提供3步激活许可证服务器的完整解决方案,解决120天宽限期问题。涵盖远程桌面授权服务器配置、许可证激活方法及组策略设置,确保企业合规使用远程桌面服务。

weixin_32705179的博客 984

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

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

cq_jone的专栏 1101

T507 buildroot linux4.9之RLT8211F 1000M以太网开发调试

调试T507的gmac,解决该RTL8211F 1000m以太网中调试遇到的问题

目前从事linux驱动开发,多交流多学习吧 689

微信小程序 - 详细实现随机生成订单号,微信小程序创建订单号思路,不重复订单号生成的方法,小程序自动生成固定规则的订单号流水号(必须是唯一不重复的订单号,生成唯一订单号)详细生成方法,示例代码教程最新

微信小程序,vue2,vue3,订单号,流水号思路,微信小程序 详细实现随机生成订单号(JavaScript),随机生成商户订单号,根据当前时间随机生成流水号或者订单号,微信小程序之商家订单,订单号随机生成器,自动生成固定规则的订单号(前缀+采购日期+6位流水号)微信小程序 生成外卖顺序号,生成订单号或流水号简单方法,实现订单号生成唯一的解决方案,如何按日期生成订单号,14位编号=8位日期(+6位流水号),自动生成订单号(固定+日期+数字),销售订单号自动生成。在微信小程序开发中,详解实现随机生成创建订单号

🏆 前端领域优质创作者 1188

xml解析器

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

star.dragon 475

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging )

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging) 如今,大多数可用的显示设备无法本地显示HDR内容。 入门级显示器的对比度仅为200:1。 尽管高端液晶电视具有更高的对比度,但平均对比度约为10,000:1,但通常每个色彩通道的离散度为8位,很少为10位。 这意味着色调限制为255。在过去的二十年中,研究人员花费了大量时间和精力来压缩HDR图像和视频的范围,以便可以在LDR显示器上更“自然”地看到数据。 图3.1 色调映射和真实场景之间.

ISP行业的忠实粉丝 1866

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

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

w36680130的博客 339

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

通往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万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

weixin_39717865的博客 362

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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、付费专栏及课程。

余额充值