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解析实例:
- <?xml version="1.0" encoding="UTF-8"?>
- <users>
- <user id="0">
- <name>Alexia</name>
- <age>23</age>
- <sex>Female</sex>
- </user>
- <user id="1">
- <name>Edward</name>
- <age>24</age>
- <sex>Male</sex>
- </user>
- <user id="2">
- <name>wjm</name>
- <age>23</age>
- <sex>Female</sex>
- </user>
- <user id="3">
- <name>wh</name>
- <age>24</age>
- <sex>Male</sex>
- </user>
- </users>
- package com.xml;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.PrintWriter;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import javax.xml.transform.OutputKeys;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerConfigurationException;
- import javax.xml.transform.TransformerException;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
- /**
- *
- * DOM 解析XML文档
- */
- public class DomDemo implements XmlDocument {
- private Document document;
- public void parserXml(String fileName) {
- try {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = dbf.newDocumentBuilder();
- Document document = db.parse(fileName);
- NodeList users = document.getChildNodes();
- for (int i = 0; i < users.getLength(); i++) {
- Node user = users.item(i);
- NodeList userInfo = user.getChildNodes();
- for (int j = 0; j < userInfo.getLength(); j++) {
- Node node = userInfo.item(j);
- NodeList userMeta = node.getChildNodes();
- for (int k = 0; k < userMeta.getLength(); k++) {
- if(userMeta.item(k).getNodeName() != "#text")
- System.out.println(userMeta.item(k).getNodeName()
- + ":" + userMeta.item(k).getTextContent());
- }
- System.out.println();
- }
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- } catch (SAXException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }