DOM解析XML

  1. XML解析分为树形解析(DOM)和流解析(SAX)两种形式。其中DOM解析是将整个XML文档全部读取到内存中,形成一棵树,进行管理,而SAX解析则是以数据流的形式,在读取XML文档时,逐次触发事件。
  2. DOM解析器的接口被W3C标准化,并且存放在org.w3c.dom包中
  3. DOM解析的过程:
    1. 获取DocumentBuilderFactory 对象
    2. 获取DocumentBuilder对象
    3. 将待解析属于与DocumentBuilder对象进行绑定,获取Document对象
    4. 调用Document对象的getDocumentElement方法,获取XML的根元素,然后进行解析
        // 获取BuilderFactory,用于进一步获取Builder
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 获取Builder对象,用于进一步获取Document对象
		DocumentBuilder docBuilder = factory.newDocumentBuilder();
		// 将待解析的XML内容放入Builder,获取一个Document对象
		Document doc = docBuilder.parse(new File("src/test.xml"));
		// 获取根元素
		Element element = doc.getDocumentElement();
		// 根据API进行实际的解析过程
		System.out.println(element.getNodeName());
  1. 类以及相关API介绍
    1. DocumentBuilderFactory: 一个工厂类,用于生成DocumentBuilder对象
    一个静态方法:用于获取DocumentBuilderFactory实例
    static DocumentBuilderFactory newInstance()
    一个成员方法:获取DocumentBuilder对象
    public DocumentBuilder newDocumentBuilder()
    2. DocumentBuilder:解析构造器,用于将XML资源解析成DOM树
    主要是parse方法:
    public Document parse(File f): 解析文件
    public Document parse(InputSource is):解析输入流
    public Document parse(String uri):解析URI指定的资源
    3. Document:表示DOM树
    主要用到一个获取根元素的方法:
    Element getDocumentElement()
    4. Element:继承自Node类:
    String getTagName(): 获取标签名称
    String getAttribute(String name): 获取指定的属性值
    5. Node:主要的一个基类:
    NodeList getChildNodes() 获取所有的子元素节点
    Node getLastChild() 获取最后一个子元素
    Node getNexSibling() 获取下一个兄弟元素
    Node getPreviousSibling() 获取前一个兄弟元素
    Node getParentNode() 获取父元素
    NamedNodeMap getAttributes() 获取所有的属性集合
    String getNodeName() 获取节点的名称
    6. NodeList: 是一个Node的集合
    int getLength(): 获取集合长度
    Node item(int index): 获取集合元素
    7. NamedNodeMap:与NodeList基本相同
    8. Text: 纯文本节点,是Node的一个子类
    public String getData(): 获取节点内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值