前言: 关于 xml 特点和基础知识,可以菜鸟教程进行学习:http://www.runoob.com/xml/xml-tutorial.html
本系列笔记,主要介绍 xml 在 web 开发时需要了解的知识
XML 指可扩展标记语言(eXtensible Markup Language)。
XML 被设计用来传输和存储数据。
一、怎么在页面上只显示数据?
大家在网页上可能都见过这样的 xml 文件:
这是没有任何样式的 xml,打开 tomcat 什么的服务器,在网页上浏览 xml 文件的样式,它的源码是:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><addresslist> <linkman> <name>肖朋伟</name> <id>2236</id> <company>null</company> <email>xpwi@qq.com</email> <tel>66666</tel> </linkman></addresslist>
怎样在页面上只显示文字,并加上特定的样式呢?那就要用到 css 了
(1)先自己写一个 css 样式:
name{ display: block; color: brown; font-size: 20pt; font-weight: bold;}id, company, email, tel, site{ display: block; color: black; font-size: 14pt; font-weight: normal;}
(2)在 xml 文件中引入这个 css 文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- 加上样式,注意路径 --><?xml-stylesheet type="text/css" href="../css/first.css" ?><addresslist> <linkman> <name>肖朋伟</name> <id>2236</id> <company>null</company> <email>xpwi@qq.com</email> <tel>66666</tel> </linkman></addresslist>
(3)就会这样显示了:
(4)然后,xml 也可以像 html 标签那样,加属性,例如:
<tel id = "userTel">66666</tel>
在 xml 文件,更多的用来描述信息的内容,
所以在得到一个 XML 文档后,应该利用程序按照其中元素的定义名称取出对应内容,
这样的操作就称为 xml 解析。
W3C 定义了 SAX 和 DOM 两种解析方式
在应用程序中,基于 DOM 的 XML 分析器将一个 XML 文档转换成一个对象模型的集合,通常称为 DOM 树
应用程序正是通过对这个对象模型的操作,来实现对 XML 文档数据的操作。
准备一个 xml 文件(路径是 D:\xml\first.xml,下面要用目录,注意):
<?xml version="1.0" encoding="UTF-8" standalone="no"?><addresslist> <linkman> <name>肖朋伟</name> <id>2236</id> <company>null</company> <email>xpwi@qq.com</email> <tel>66666</tel> </linkman></addresslist>
java 解析文件:
【注意】:
1.目录,我是新建一个包 xml ,再新建一个 dom.java
2.注意解析的 xml 路径,要根据自己的路径设置
3.如果自己写代码,注意一下导包,Document,是 org.w3c.dom.Document
// 目录,我是新建一个包 xml ,再新建一个 dom.javapackage xml;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;//注意 Document,是 org.w3c.dom.Document//默认导包会是 javax 那个,注意一下import org.w3c.dom.Document;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import java.io.File;import java.io.IOException;public class dom { public static void main(String[] args){ //(1)建立 DocumentBuilderFactory,用来得到 DocumentBuilder DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //(2)通过 DocumentBuilderFactory,来得到 DocumentBuilder DocumentBuilder builder = null; try{ builder = factory.newDocumentBuilder(); }catch (ParserConfigurationException e){ e.printStackTrace(); } //(3)定义 Document doc = null; try { //读取指定路径的 xml 文件,要先有一个这样的文件 doc = builder.parse("D://xml/" + File.separator + "first.xml"); } catch (SAXException e){ e.printStackTrace(); } catch (IOException e){ e.printStackTrace(); } //(4)查找 name 的节点 NodeList nl = doc.getElementsByTagName("name"); //(5)输出 NodeList 中第一个子节点中文本节点的内容 System.out.println("姓名:" + nl.item(0).getFirstChild().getNodeValue()); }}
运行就会在控制台打印:
DOM 解析4个核心操作接口:
Document 接口的常用方法
No. | 方 法 | 类 型 | 描 述 |
---|---|---|---|
1 | public NodeList getElementsByTagName(String name) | 普通 | 取得指定节点名称的 NodeList |
2 | public Element createElement(String tagName)throws DOMException | 普通 | 创建一个指定名称的节点 |
3 | public Text createTextNode(String data) | 普通 | 创建一个文本内容节点 |
4 | Element createElement(String tagName)throws DOMException | 普通 | 创建一个节点元素 |
5 | public Attr createAttribute(String name)throws DOMException | 普通 | 创建一个节点元素 |
Node 接口的常用方法
No. | 方 法 | 类 型 | 描 述 |
---|---|---|---|
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在当前节点下增加一个新节点 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在当前节点下增加一个新节点 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在当前节点下增加一个新节点 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在当前节点下增加一个新节点 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在当前节点下增加一个新节点 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在当前节点下增加一个新节点 |
1 | Node appendChild(Node newChild)throws DOMException | 普通 | 在当前节点下增加一个新节点 |
联系客服