什么是XML?
xml是可扩展标记语言,标准通用标记语言的子集,简称XML
xml总之就是传输数据的,而非是页面显示数据的
xml标签没有被预定义,需要自定义标签
xml被设计为具有自我描述性
xml是W3C(World Wide Web Consortium,万维网联盟)的推荐标准
XMl的特点
- xml可以从html中分离数据,既能够在html文件之外将数据存储在xml文档中,这样可以使开发者集中精力使用html做好数据的显示和布局,并确保数据改动时不会导致html文件也需要改动,从而方便维护页面。
- xml可用于交换数据,基于xml可以再不兼容的系统之间交换数据,计算机系统和数据库系统所存储的数据有多种形式,对于开发者而言,最消耗的时间的工作就是在遍布网络的系统之间交换数据。把数据转换为xml格式存储大大减少了交换数据的复杂性,还可以使这些数据能被不同的程序读取。
- 利用xml可以共享数据。xml数据以纯文本格式存储,这使得xml更易读、便于记录、便与调试,使不同系统、不同程序之间的数据共享变得更加简单
- xml不是代替html的,html着重于如何将文本显示到浏览器中,而xml是如何将数据以结构化的方式表示。
HTML和XML的区别
xml不是替代html的,它们是为了不同的目标而设计的,xml是用来传输和存储数据的,而html是用来显示数据,其焦点是数据显示的。html语法表松散,xml语法比较严格。html中的标签都是定义好的,而xml的标签是自己定义的。
XML用处
数据存储
配置文件
数据传输
基本语法
-
必须文档声明
必须写到第一行;
写法:<?xml version="1.0" encoding="utf-8" standalone="yes"?>
version 版本号
encoding 字符编码
standalone 指定文档是否为独立的 yes或者no,是否可以引用其他文件
2.规则
所有xml元素必须有关闭标签
xml标签对大小写敏感
必须正确的嵌套
文档必须有根元素
属性值必须加引号
3.元素
名称可以包含字母、数字、以及其他字符
XML解析
- DOM解析;
- SAX解析;
- JDOM解析;
- DOM4J解析。
其中前两种属于基础方法,是官方提供的平台无关的解析方式;后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台。
DOM解析
摘自https://blog.csdn.net/a1353206432/article/details/80583302
DOM解析的xml分析器是将其转换为一个对象模型的集合,用树这种数据结构对信息进行储存。通过DOM接口,应用程序可以在任何时候访问xml文档中的任何一部分数据,因此这种利用DOM接口访问的方式也被称为随机访问。
编写xml文件
<?xml version="1.0" encoding="utf-8"?><!--文档声明-->
<bookstore>
<book>
<author>格林童话</author>
<price>10.0</price>
</book>
<book>
<author>Java入门到放弃</author>
<price>10.0</price>
</book>
<book>
<author>滴滴</author>
<price>10.0</price>
</book>
</bookstore>
DOM解析操作步骤
-
建立DocumentBuilderFactor,用于获得DocumentBuilder对象:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-
建立DocumentBuidler:
DocumentBuilder builder = factory.newDocumentBuilder();
-
建立Document对象,获取树的入口:
Document doc = builder.parse(“xml文件的相对路径或者绝对路径”);
-
建立NodeList:
NodeList n1 = doc.getElementByTagName(“读取节点”);
-
进行xml信息获取
代码
// xml的DOM解析方法
class XmlDomA{
public static void main(String[] args) throws ParserConfigurationException, IOException, SAXException {
// 1. 建立DocumentBuilderFactor,用于获得DocumentBuilder对象:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 2. 建立DocumentBuidler:
DocumentBuilder builder = factory.newDocumentBuilder();
// 3. 建立Document对象,获取树的入口:
Document doc = builder.parse("BasicSkills\\src\\main\\resources\\TestA.xml");
// 4. 建立NodeList:
NodeList node = doc.getElementsByTagName("book");
// 5. 进行xml信息获取
for(int i=0;i<node.getLength();i++) {
Element e = (Element) node.item(i);
System.out.println("书名:" +
e.getElementsByTagName("author").item(0).getFirstChild().getNodeValue());
System.out.println("价钱:" +
e.getElementsByTagName("price").item(0).getFirstChild().getNodeValue());
}
}
}