A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 呱码农 中级黑马   /  2016-11-21 23:05  /  958 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、XML简介
       XML(eXtensible Markup Language) 即 可扩展标记语言 。提供了一套跨平台、跨网络、跨程序的语言的数据描述方式,使用 XML 可以方便地实现数据交换、系统配置、内容管理等常见功能。

二、XML简单示例<?xml version='1.0' encoding="UTF-8">
   <student>
     <name id="1">hoiyook</name>
     <sex></sex>
     <age>21</age>
   </student>
//这是一个简单的XML文件
弄清几个概念:
元素 VS  节点
节点包括元素节点、属性节点、文本节点
元素一定是节点,节点不一定是元素

以上面的XML简单示例为例
——————————————
1. name、sex、age属于元素节点
——————————————
2. id="1"属于属性节点
___________________________________
3. hoiyook、女、21属于文本节点
___________________________________

三、DOM方式解析XML

       DOM  方式解析 XML  原理:基于dom解析方式,把整个xml文档加载到内容,转成dom树,因此应用程序可以随机的访问dom的任何数据。
       优点灵活性强,速度快。
       缺点:消耗资源比较多。(XML大时消耗大,因此,DOM方式解析XML不适合用于大的XML)

DOM方式解析XML示例:

DOM01:准备一个student.xml文件放在src文件下

<?xml version="1.0" encoding="UTF-8"?>
<student  id="001"aa="xx">
   <name>张三</name>
   <sex></sex>
   <age>20</age>

</student>
      代码部分

public class DOM01 {
public static voidmain(String[] args) {
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    try {
      DocumentBuilder  builder= factory.newDocumentBuilder();
      Document doc=builder.parse("src/student.xml");
      NodeList nodeList = doc.getElementsByTagName("student");
      Element e=(Element)nodeList.item(0);
      System.out.println("姓名:"+e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
      System.out.println("性别:"+e.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue());
      System.out.println("年龄:"+e.getElementsByTagName("age").item(0).getFirstChild().getNodeValue());
   } catch(Exception e) {
      // TODOAuto-generated catch block
      e.printStackTrace();
   }
}
}

输出结果:
姓名:张三
性别:
年龄:20


DOM02:准备一个students.xml文件放在src文件下
<?xml version="1.0" encoding="UTF-8"?>
<students>
   <student  id="001">
      <name xx="哈哈">张三</name>
      <sex></sex>
      <age>20</age>
   </student>
   <student id="002">
      <name >李四</name>
      <sex></sex>
      <age>20</age>
   </student>
</students>


代码部分:
public class DOM02 {
   public static voidprintNodeAttr(Node node){
      NamedNodeMap namedNodeMap=node.getAttributes();
      for(int i=0;i<namedNodeMap.getLength();i++){
        Node attrNode = namedNodeMap.item(i);
       System.out.println(attrNode.getNodeName()+":"+attrNode.getFirstChild().getNodeValue());
      }
   }
public static voidmain(String[] args) {
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    try {
      DocumentBuilder  builder= factory.newDocumentBuilder();
      Document doc=builder.parse("src/students.xml");
      NodeList nodeList = doc.getElementsByTagName("students");
      Element element=(Element)nodeList.item(0);
      NodeList studentsNodeList = element.getElementsByTagName("student");
      for(int i=0;i<studentsNodeList.getLength();i++){
        Element e=(Element)studentsNodeList.item(i);
        System.out.println("姓名:"+e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
        printNodeAttr(e.getElementsByTagName("name").item(0));
        System.out.println("性别:"+e.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue());
        System.out.println("年龄:"+e.getElementsByTagName("age").item(0).getFirstChild().getNodeValue());
        System.out.println("===================");
      }
      
   } catch(Exception e) {
      // TODOAuto-generated catch block
      e.printStackTrace();
   }
}
}


输出结果:
姓名:张三
xx:哈哈
性别:
年龄:20
===================
姓名:李四
性别:
年龄:20
===================

四、SAX方式解析XML
SAX 的工作原理:简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element开始与结束、文档(document)结         束等地方时通知事件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。
      优点:消耗资源比较少;适合大文件解析;
      缺点:只能读取不能修改;开发复杂;
SAX方式解析XML示例:

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈没写~~




五:Java操作XML (JDOM&DOM4J)

待续...




4 个回复

倒序浏览
给力,javaEE班的到时候也要学XML吧
回复 使用道具 举报
SuperLan 发表于 2016-11-21 23:19
给力,javaEE班的到时候也要学XML吧

应该要学的吧,我还没正式上课。现在先自学{:8_533:}
回复 使用道具 举报
呱码农 发表于 2016-11-21 23:22
应该要学的吧,我还没正式上课。现在先自学

厉害厉害
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马