【JAVA原生方式解析XML】

本文介绍如何使用DOM解析器解析XML文档,并通过Transformer转换器输出更新后的文档。详细讲解了DOM解析器的操作步骤及节点类型,同时给出了Transformer转换过程的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、DOM 解析器

1)首先得到 DOM 解析器的工厂实例      

DocumentBuilderFactory domfac=DocumentBuilderFactory.newInstance();

2)从 DOM 工厂获得 DOM 解析器

DocumentBuilder dombuilder=domfac.newDocumentBuilder();

3)把要解析的 XML 文档转化为输入流,以便 DOM 解析器解析它

InputStream is= new  FileInputStream("test1.xml");        

4)解析 XML 文档的输入流,得到一个 Document

Document doc=dombuilder.parse(is);

5)得到 XML 文档的根节点

Element root=doc.getDocumentElement();

6)得到节点的子节点

  NodeList books=root.getChildNodes();

  

  

二、Transformer转换器 

使用Transformer将更新后的XML文档进行输出

 transformDomToXml(Document document,String FileName){

    try{

TransformerFactory tFactory = TransformerFactory.newInstance();

Transformer transformer = tFactory.newTransformer();

DOMSource source = new DOMSource(document);

StreamResult result = new StreamResult(new File(FileName));

transformer.transform(source,result);

     }catch (TransformerConfigurationException tce) {

        System.out.println("   " + tce.getMessage() );  

     }catch (TransformerException te) {

          System.out.println("   " + te.getMessage() );

     } 

  

DOM是javascript操作网页的接口,全称为文档对象模型(Document Object Model)。它的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容)。浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组成一个树状结构。DOM的最小组成单位叫做节点(node),文档的树形结构(DOM树)由12种类型的节点组成。本文将主要说明DOM节点类型

 

总括一般地,节点至少拥有nodeType、nodeName和nodeValue这三个基本属性。节点类型不同,这三个属性的值也不相同

 

nodeType属性返回节点类型的常数值。不同的类型对应不同的常数值,12种类型分别对应1到12的常数值

元素节点              Node.ELEMENT_NODE(1)

属性节点              Node.ATTRIBUTE_NODE(2)

文本节点              Node.TEXT_NODE(3)

CDATA节点             Node.CDATA_SECTION_NODE(4)

实体引用名称节点       Node.ENTRY_REFERENCE_NODE(5)

实体名称节点          Node.ENTITY_NODE(6)

处理指令节点          Node.PROCESSING_INSTRUCTION_NODE(7)

注释节点              Node.COMMENT_NODE(8)

文档节点              Node.DOCUMENT_NODE(9)

文档类型节点          Node.DOCUMENT_TYPE_NODE(10)

文档片段节点          Node.DOCUMENT_FRAGMENT_NODE(11)

DTD声明节点            Node.NOTATION_NODE(12)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值