可扩展的标记语言
1:作用:可以交换数据(是一种通用的数据交换的格式) 配置文件 等
2:XML语法
只要在第一行打上<?xml version="1,0" encoding="utf-8" standalone="yes"?> 就可以了
yes表示,不包含其他文档 no为包含其他文档,no可以不;
< >表示XML文档中元素(Element)
version 就是版本的意思 有只有一个版本
encoding 就是输入的编码格式
3:XML的书写要求
(1) 必须要有根目录,然后可以嵌套,不可以交叉嵌套
(2) < contacts>
< head id =“1”> id就是元素放的地方然后contacts就是根了
< /head>
< /contacts>
(3)标签必须成对出现
(4)注意编码格式
(5)如果标签中没有内容我们可以使用单标签
(6)注释
注意:xml中有且仅有一个根 ,如果文档内容的编码和文件的编码要统一到UTF-8否则就会报错,根类的爸爸是整个Xml文本
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bbtHmKqZ-1599135775862)(C:\Users\Administrator\Desktop\JavaWeb资料\1 基础加强\2 XML&数据库\image\xml结构图.png)]
1:XML文件:把xml文档加载进入内存中,使用Document描述整个文档
2:所有的标签/元素:使用Element对象描述
3:属性:标签的睡醒,使用attribute来描述
4:文本:文本内容(文本/空格.车)使用txt描述
在Xml种一切都是节点 ,XML加载进入内存之后就称为了一个一个对象,这种操作我们交Dom解析
node类是Document-Element的父类然后我们需要使用子类的方法的时候我们需要使用强行转换来比较,
DOM:Document Object Model:文档对象模型,把文档中的成员描述成一个一个对象那个
特点就是:直接将xml放入内存,形成一个树
缺点:xml要是太大容易内存溢出
1:声明一下Xml文件
File file = new File(path);
2:通过DocumentBUilderFactort获取DounmentBuliedeFactory对象
DoucumentBuiderFactory factory = DocumentBuliderFactory();
3:通过factory获取DocumentBuilder对象
DocumentBulider builder = factory.newDocumentBuilder();
4:通过builder获取Document对象
Document doc = builder.parse(file);
//这种是当不知道文件地址的时候使用
Document doc = builder.newDocument**();**
当一个类,没有静态方法,我们肯定是有一个工具类可以创建他的对象,让我们来创建当前类的对象;
1:获取Document对象
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);//快捷方法
2:获取根节点标签
Element getDocumentElement();获取当前xml对象根节点
3:获取第linkman的节点(字节定义节点)
Element getElementByTageName(String name);
可以获取根节点下的节点,按名字搜索 然后再最可以家itea();选定为第几个
4:获取linkman里面的名字节点
和上边的方法一样 就是再获取一遍拿整个上边的对象一级一级往里找 String name 就是你要找的标签面子写入里面就好了
5:获取名字节点文本内容
String getTextContent():获取节点的文本内容
void setTextContent();设置文本节点内容
1:获取文件对象
2:获取根目录
3:创建一个Linkman代码片段
Element nameE1 = doc.createment(“linkman”);
Element emailE1 = doc.createment(“email”);
4:创建name email adress group然后分别给他们设置值
setTextcontent("…值");
5:将name几个赋值给Linkman片段 然后将Linkman赋值给根元节点
需要找爸爸的.appendChild(爸爸对象);
6:最后一一定记得要同步操作
同步api:
Transformer:同步转换器
public abstract void transform(Source XmlSourec , Result outputTarget);
source:源是内存中Document,所以使用DOMSource(doc) 实现类
Result:内容写到次哦按,使用流操作文件,所有使用StreamResult(file)实现类
TransformerFactory.newInstance().newTransformer().transform(new DOMSource(doc),new StreamResult(file));
如果要不进行同步,就不会将内存上的文档树Document的内容搞到底
扩展
1:XML解析方式
2:dtd
3:schema