分享
 
 
 

JAXP跟DOM4J是什么关系?

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

JAXP是sun提出的一个规范,用于定义如何解析和转换xml文档的接口,目前版本已经达到1.3,根据解析转换供应商无关性,解析器和转换器可以在具体运行时进行多样更换。这本身对于应用开发来说是一个福音。

但是目前jaxp在国内的使用并不是想象中那样的广泛,这也是由于一定的市场原因存在(对于不同版本的jvm的支持的需求)。

现在更多的应用采用dom4j和jdom,其操作接口更为简便。

个人以为,dom4j(不太了解jdom)并不是严格意义上的xml解析器,其底层也是采用符合jaxp规范的具体实现,并且dom4j的文档中表明,可以和jaxp协同工作,采用jaxp已经config好的解析器和转换器。

在dom4j最新发布版本1.5.2中,由于许可证的问题,内部去除了解析器Aelfred2的实现,这下是否更应该依赖于底层的crimson.jar or xerces.jar,而二者是遵循jaxp规范的。

具体知识还在研究中。

对此与www.JavaGarden.net的一段讨论:

.--------------------------------------------------------------------.

| Session Start: 2005年4月6日 |

| Participants: |

| (sn)大阿福 (toafu@msn.com) |

| .... 4月18日,爱因斯坦50周年祭日(ip)www.JavaGarden.net (turbochen@163.com) |

.--------------------------------------------------------------------.

[16:39:28] (sn)大阿福:

http://blog.csdn.net/toafu/archive/2005/04/06/338337.aspx

[16:39:34] (sn)大阿福: 我理解的对吗?

[16:41:57] Turbo, A bea: good

[16:42:52] (sn)大阿福:

可是我怎么找不到我直接使用dom4j的时候,它是怎样于jaxp发生关联的。当类路径里面有二者的时候。

[16:46:18] Turbo, A bea: jaxp不是有几个factory吗,就是从这入手的.

[16:47:06] (sn)大阿福: 可是我没有看到dom4j对这几个factory有什么实现?

[16:48:24] Turbo, A bea: 我记得在一个什么文章上看到过, 好像是从factory上入手, 传入一个class之类的.

具体用什么方法还得去查查.

[16:49:08] (sn)大阿福: 就是跟dom4j发生关联的?

[16:49:41] Turbo, A bea: 你应该还记得jdbc的驱动是怎么加载的, 跟那个原理类似.

[16:50:37] (sn)大阿福: 按顺序找几个路径下是否有可加载的类

[16:51:23] Turbo, A bea: 不是, 是DriverManager.forName("classname");

类似这样的方式.

[16:51:32] (sn)大阿福: 对

[16:53:52] (sn)大阿福:

是不是这样理解,dom4j是不遵从jaxp规范的实现,同样底层是那些遵从了jaxp规范的xml解析器,只是因为dom4

j提供了很简便的接口而应用广泛

[16:55:49] Turbo, A bea: 我觉得是dom4j遵从了jaxp规范, 并加以扩展, 使API更容易使用.

我没有实际用过dom4j, 但知道它比jaxp的dom api好用很多.

我之前开发全用是jaxp 的 dom api, 取一个元素代码很啰嗦.

[16:56:40] Turbo, A bea: 而jdom才是切头切尾的没遵从jaxp规范

[16:56:52] Turbo, A bea: 不易移植.

[16:57:14] (sn)大阿福:

好。我想知道的是,如果dom4j和jaxp的api都在classpath下时,如果能够实现直接操作jaxp接口而保证底

层用dom4j实现的呢?

[17:00:08] Turbo, A bea: How does dom4j relate to DOM?

DOM is a quite large language independent API. dom4j is a

simpler, lightweight API which is optimised for the Java

making extensive use of the Java 2 platform such as the

Java 2 collections.

Though dom4j fully supports the DOM standard allowing both

APIs to be used easily together.

[17:00:19] Turbo, A bea: 上面这段是dom4j的FAQ的内容

[17:00:57] Turbo, A bea: dom4j fully supports the DOM standard

allowing both APIs to be used easily together.

[17:01:07] Turbo, A bea: 上面这句最关键

[17:01:52] (sn)大阿福: 不太明白什么意思

[17:02:28] (sn)大阿福: both是指?

[17:02:49] Turbo, A bea: 应该是指dom4j和dom

[17:03:05] Turbo, A bea: together证明了这点

[17:03:10] (sn)大阿福: 哦?

[17:04:53] Turbo, A bea: 再看这一句: Dom4j works with any SAX parser via

JAXP.

[17:05:37] (sn)大阿福: 呵呵,我就想知道它是如何work with的,或者咱们在代码里写的时候如何融合dom4j和jaxp

[17:05:40] Turbo, A bea: 这就意味者,只要是符合jaxp规范的sax parser, 都可以作为dom4j的sax

parser使用.

[17:07:00] (sn)大阿福: 你这句没错

[17:08:04] (sn)大阿福: 那就是说dom4j和jaxp是并列的,只是dom4j不是规范而已,是吗

[17:08:58] Turbo, A bea: 我觉得jaxp是规范,而dom4j是规范的扩展.

[17:09:35] (sn)大阿福: 而xerces等是规范的实现

[17:09:55] Turbo, A bea: 是啊

[17:10:21] (sn)大阿福: 是不是jaxp还未直接支持xpath,所以易用性不如dom4j

[17:10:35] Turbo, A bea: 其实, jaxp最初的实现是由apache捐现的,

[17:10:47] (sn)大阿福: 所以xml解析器就是apache的

[17:10:59] Turbo, A bea: 还未完全实现xpath, 不知java5实现的如何了.

[17:11:10] Turbo, A bea: 是啊

[17:11:29] (sn)大阿福: 新的1.3支持java5,呵呵

[17:11:36] (sn)大阿福: 好,多谢指教

[17:13:40] Turbo, A bea:

http://www.pconline.com.cn/pcedu/empolder/wz/xml/0412/50976

2_1.html

[17:13:52] Turbo, A bea: 这个文章可以一看,但不可全信.

[17:14:04] (sn)大阿福: OK,3ks

[17:17:50] Turbo, A bea:

http://www.54bk.com/more.asp?name=captain&id=1887

这个文章就可以看明白它们的关系了

[17:19:36] (sn)大阿福: dom4j应用程序 -> dom4j API -> Xerces/Crimson解析器

dom4j应用程序 -> dom4j API -> Alfred2解析器

[17:20:01] (sn)大阿福: dom4j默认都是用第一行的解析器吧

[17:20:09] Turbo, A bea: apache的Xerces/Crimson解析器是核心,

[17:20:15] (sn)大阿福: 嗯

[17:20:24] Turbo, A bea: 其它类型的api都是用这些解析器.

[17:20:34] (sn)大阿福: Alfred2已经在dom4j

[17:20:44] (sn)大阿福: 1.5.2中remove掉了

[17:20:56] Turbo, A bea: 是的

[17:22:12] (sn)大阿福:

所以jaxp和dom4j之间并没有规范和实现的关系,而dom4j使用实现了jaxp规范的apache的解析器来解析xm

l文档。

[17:22:24] (sn)大阿福: 感觉轮廓渐渐清晰了

[17:22:36] Turbo, A bea: 而jaxp定义的接口,包括dom和sax接口.

[17:22:54] Turbo, A bea: 然后jaxp也有自己的dom和sax实现.

[17:23:16] (sn)大阿福: 那就是jaxp RI

[17:24:07] (sn)大阿福: 是sun做的。sun定义了jaxp规范,完了又实现了自己的一套api,解析器同样用apache的

[17:24:45] (sn)大阿福: dom4j是未遵从jaxp规范实现了一套更易用的api,解析器也是用apache的

[17:25:42] (sn)大阿福:

dom4j文档中描述:当jaxp的jar在类路径中是,dom4j使用的解析器会依据jaxp配置中的进行选择。

[17:27:09] Turbo, A bea: 所以'work with jaxp'的意思是指符合jaxp 规范的parser.

[17:28:09] (sn)大阿福: 对,work with xml parsers obeying jaxp

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有