XML的规范与解析

1. XML文件:

什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

开发中使用XML主要有以下两方面应用.
     a.XML做为数据交换的载体,用于数据的存储与传输
  b.XML做为配置文件

2,书写规范

 xml必须有根元素(只有一个)

xml标签必须有关闭标签

xml标签对大小写敏感

xml的属性值须加引号

特殊字符必须转义

xml中的标签名不能有空格

空格/回车/制表符在xml中都是文本节点

xml必须正确地嵌套

3.XML文件的优点:

1)XML文档内容和结构完全分离。
2)互操作性强。
3)规范统一。
4)支持多种编码。
5)可扩展性强。

3.解析XML文件及优缺点:

一般有DOM解析和SAX解析,本文以DOM解析实例:

DOM解析:

【优点】
     1)允许应用程序对数据和结构做出更改。
      2访问是双向的,可以在任何时候在树中上下导航,获取和操作任意部分的数据。
【缺点】
      1通常需要加载整个XML文档来构造层次结构,消耗资源大

本文只已DOM解析实例:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <users>  
  3.     <user id="0">  
  4.         <name>Alexia</name>  
  5.         <age>23</age>  
  6.         <sex>Female</sex>  
  7.     </user>  
  8.     <user id="1">  
  9.         <name>Edward</name>  
  10.         <age>24</age>  
  11.         <sex>Male</sex>  
  12.     </user>  
  13.     <user id="2">  
  14.         <name>wjm</name>  
  15.         <age>23</age>  
  16.         <sex>Female</sex>  
  17.     </user>  
  18.     <user id="3">  
  19.         <name>wh</name>  
  20.         <age>24</age>  
  21.         <sex>Male</sex>  
  22.     </user>  
  23. </users>  
[java]  view plain  copy
  1. package com.xml;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6. import java.io.PrintWriter;  
  7. import javax.xml.parsers.DocumentBuilder;  
  8. import javax.xml.parsers.DocumentBuilderFactory;  
  9. import javax.xml.parsers.ParserConfigurationException;  
  10. import javax.xml.transform.OutputKeys;  
  11. import javax.xml.transform.Transformer;  
  12. import javax.xml.transform.TransformerConfigurationException;  
  13. import javax.xml.transform.TransformerException;  
  14. import javax.xml.transform.TransformerFactory;  
  15. import javax.xml.transform.dom.DOMSource;  
  16. import javax.xml.transform.stream.StreamResult;  
  17. import org.w3c.dom.Document;  
  18. import org.w3c.dom.Element;  
  19. import org.w3c.dom.Node;  
  20. import org.w3c.dom.NodeList;  
  21. import org.xml.sax.SAXException;  
  22.   
  23. /** 
  24.  *  
  25.  * DOM 解析XML文档 
  26.  */  
  27. public class DomDemo implements XmlDocument {  
  28.     private Document document;  
  29.   
  30.     public void parserXml(String fileName) {  
  31.         try {  
  32.             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
  33.             DocumentBuilder db = dbf.newDocumentBuilder();  
  34.             Document document = db.parse(fileName);  
  35.             NodeList users = document.getChildNodes();  
  36.               
  37.             for (int i = 0; i < users.getLength(); i++) {  
  38.                 Node user = users.item(i);  
  39.                 NodeList userInfo = user.getChildNodes();  
  40.                   
  41.                 for (int j = 0; j < userInfo.getLength(); j++) {  
  42.                     Node node = userInfo.item(j);  
  43.                     NodeList userMeta = node.getChildNodes();  
  44.                       
  45.                     for (int k = 0; k < userMeta.getLength(); k++) {  
  46.                         if(userMeta.item(k).getNodeName() != "#text")  
  47.                             System.out.println(userMeta.item(k).getNodeName()  
  48.                                     + ":" + userMeta.item(k).getTextContent());  
  49.                     }  
  50.                       
  51.                     System.out.println();  
  52.                 }  
  53.             }  
  54.               
  55.         } catch (FileNotFoundException e) {  
  56.             e.printStackTrace();  
  57.         } catch (ParserConfigurationException e) {  
  58.             e.printStackTrace();  
  59.         } catch (SAXException e) {  
  60.             e.printStackTrace();  
  61.         } catch (IOException e) {  
  62.             e.printStackTrace();  
  63.         }  
  64.     }  
  65. }  







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值