快速业务通道

Java中文档对象模型DOM使用经验 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
了文本信息的TextNode节点,那么如果要处理的数据都是以这种形式给出的,就会增加大量的开发代码同时让开发工作枯燥无味,因此这里使用了一个默认的约定实现,就是,给出了一个公共方法,该方法取给定Node下的直接子节点的Text节点文本信息,如果不存在Text节点则返回null,这个约定虽然使该方法的使用有所限制,也可能导致错误使用该方法,但是,按实际使用的状况来看,这样的约定和使用方式是没有问题的,因为实际用到的都是上面举的例子的状况,代码:

/** * 这个方法获取给定Node下的Text节点文本信息,如果不存在Text节点则返回null。 * 注意:是直接子节点,相差2层或2层以上不会被考虑。 * @param node a Node 一个Node。 * @return a String 如果给定节点存在Text子节点,则返回第一个访问到的Text子节点文本信息,如果不存在则返回null。 */ public static String getNodeValue(Node node) {   if (node == null) {    return null;   }   Text text = getTextNode(node);   if (text != null) {    return text.getNodeValue();   }   return null; } /** * 这个方法获取给定Node下的Text节点,如果不存在Text节点则返回null。 * 注意:是直接子节点,相差2层或2层以上不会被考虑。 * @param node a Node 一个Node。 * @return a Text 如果给定节点存在Text子节点,则返回第一个访问到的Text子节点,如果不存在则返回null。 */ public static Text getTextNode(Node node) {   if (node == null) {    return null;   }   if (node.hasChildNodes()) {    NodeList list = node.getChildNodes();    for (int i = 0; i < list.getLength(); i++) {     if (list.item(i).getNodeType() == Node.TEXT_NODE) {      return (Text) list.item(i);     }    }   }   return null; }

Java中文档对象模型DOM使用经验(4)

时间:2010-12-08

上面代码将获取给定Node节点的直接Text子节点分开包装。

另一个很经常碰到的状况是,我希望直接定位到目标节点,获取该节点对象,而不需要通过一层一层的节点遍历来找到目标节点,DOM2接口中至少提供了如下的方式来定位节点:

1、对于Document对象:

1) getDocumentElement()――获取根节点对象,实际很少使用的,因为根节点基本也就只是根节点而已,实际的数据节点都是根节点下的直接子节点开始的。

2) getElementById(String elementId)――这个方法本来应该是一个最佳的定位方法,但是在实际使用过程中没有被我使用,其主要原因就是,这里的"ID"不同于一个节点的属性"ID",这在org.w3c.dom.Document的API说明中是明确指出,而我找了不少的资料也没有看到有关的使用方式,所以只好放弃了。

3) getElementsByTagName(String tagname)――这个方法其实是没有办法的选择,只好用它了,不过实际倒也很合用,虽然该方法返回的是一个NodeList,但是实际使用时,将节点的tagName设计成特殊字符串,那么就可以直接获取了,而实际使用时,其实也差不多,很多时候会直接拿数据库中的字段名来作为tagName,以方便得获取该字段得值,在一个简单得约定下,使用了如下方法:

/** * 这个方法检索参数element下所有TagName为:tagName的节点,并返回节点列表的第一个节点。 * 如果不存在该tagName的节点,则返回null。 * @param element 待搜索节点 * @param tagName 待搜索标签名 * @return a Element 获得以tagName为标签名的节点列表的第一个节点。 */ public static Element getFirstElementByName(   Element element,String tagName) {    return (Element) getFirstElement(element.getElementsByTagName(tagN

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号