dom解析 jdk自己提供的

document object model 文档对象模型

package dom ;
import java.io.* ;
import org.w3c.dom.* ;
import javax.xml.parsers.* ;
public class DOMDemo {
    public static void main(String args[]) throws Exception {
        // 取得DocumentBuilderFactory类的对象
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
        // 取得DocumentBuilder类的对象
        DocumentBuilder build = factory.newDocumentBuilder()  ;

         File directory = new File("");//设定为当前文件夹 
//       System.out.println(directory.getCanonicalPath());//获取标准的路径 
//       System.out.println(directory.getAbsolutePath());//获取绝对路径 
         String basepath=directory.getAbsolutePath();
         String path=basepath+"/xmlfile/dom_demo_01.xml";

        Document doc = build.parse(new File(path) );
        NodeList nl = doc.getElementsByTagName("name") ;
        // 输出节点
        System.out.println("姓名:" + nl.item(0).getFirstChild().getNodeValue()) ;

    }


}

xml文件是这样的


parse是分析的意思

你好,牛牛,老大,这几个节点就是nodelist nl
nl.item(1)就是你好标签
nl.item(2)是牛牛
nl.item(3)就是老大

getFirstChild获取文本节点
getNodeValue获取节点的内容,这个肯定是最后调用

这里既然使用到了newInstance 就来扯一扯 new newInstance Class.forName

newInstance: 弱类型。低效率。只能调用无参构造,是单例模式,也就是只可以获取一个实例,而new可以获取很多实例

new: 强类型。相对高效。能调用任何public构造。

有个比喻:newInstance应该是相亲,必须提供必要的参数(房子,车子等),你对这个对象还不甚了解,只知道基本大概属性(比如女方的名字(类名),以及人家期待的刚性需求房子车子票子(参数)),最后结果很大程度上取决于你的参数的质量。
new是谈恋爱,你对这个对象比较了解了,比如刚性需求这一快,有一个public构造函数,对应的就是外省的人必须房子车子票子,三者必须全,而且不是能是空。但是他还有一个包内的构造函数,本地区的只要房子车子就行了,甚至还有一个受保护的构造,她爹妈有招女婿的倾向,如果你知道这一点车房全面,人家给你提供车房。恋爱是否成功往往取决于你对这个对象是否了解。
new是自己下厨,做饭自己吃。newInstance是外面吃别人做给你吃。

使用newInstance一定先加载这个类到jvm虚拟机里面,也就是加载class文件
用法是Class.forName(xxxx).newInstance()

在这里,javax.xml.parsers.DocumentBuilderFactory这个类并没有手动加载,直接调用newInstance方法了,所以只有可能是这个类和常用类String什么的一样,虚拟机自动帮你加载了,这个包也是java自带的包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值