JAVA中xml与dom解析

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transformations).
XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已。基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。假设我们XML的内容和结构如下: 
<?xml version="1.0" encoding="UTF-8"?> 
<employees> 
<employee> 
<name>ddviplinux</name> 
<sex>m</sex> 
<age>30</age> 
</employee> 
</employees>
DOM解析:
DOM解析原理:xml解析器一次性把整个xml文档加载进内存,然后在内存中构建一颗Document的对象树,通过Document对象,得到树上的节点对象,通过节点对象访问(操作)到xml文档的内容。

Document对象代表了一个完整的xml文档,通过Document对象,可以得到其下面的其他节点对象,通过各个节点对象来访问xml文档的内容。其中主要包括:标签节点,属性节点,文本节点和注释节点;并且各类节点也被封装成对应的对象,通过操作不同的对象来访问xml的内容:树只有一个根标签,树上的分支叫做节点(node)

读取xml文件

首先创建xml解析器对象,获取到Document对象:

public static Document getDocument(){
      //创建一个XML解析器      
  SAXReader saxReader = new SAXReader();
         try {
              //读取Document对象
              Document document = null;
             document = saxReader.read("./src/xml/User.xml");
              return document;
         } catch (DocumentException e) {
             e.printStackTrace();
         }
         return null;

     }


Iterator  Element.nodeIterator();  //获取当前标签节点下的所有子节点

标签:
Element Document.getRootElement();  //获取xml文档的根标签 
Element ELement.element("标签名") //指定名称的第一个子标签
Iterator<Element> Element.elementIterator("标签名");// 指定名称的所有子标签
List<Element> Element.elements(); //获取所有子标签
属性:
String   Element.attributeValue("属性名") //获取指定名称的属性值
Attribute    Element.attribute("属性名");//获取指定名称的属性对象      
Attribute.getName()  //获取属性名称
Attibute.getValue()  //获取属性值
List<Attribute>  Element.attributes();  //获取所有属性对象
Iterator<Attribute>  Element.attibuteIterator(); //获取所有属性对象
文本:
Element.getText();  //获取当前标签的文本
Element.elementText("标签名") //获取当前标签的指定名称的子标签的文本内容
增加:
DocumentHelper.createDocument() 增加文档
addElement("名称") 增加标签
addAttribute("名称",“值”) 增加属性
修改:
Attribute.setValue("值") 修改属性值
Element.addAtribute("同名的属性名","值") 修改同名的属性值
Element.setText("内容") 修改文本内容
删除:
Element.detach(); 删除标签
Attribute.detach(); 删除属性
写出内容到xml文档
XMLWriter writer = new XMLWriter(OutputStream, OutputForamt)
wirter.write(Document);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值