### **xml的介绍**
* 什么是xml文件?
xml即可扩展标记语言(e**X**tensible**M**arkup**L**anguage)
XML 被设计用来传输和存储数据。
XML 标签没有被预定义。您需要自行定义标签。XML 被设计为具有自我描述性。
### **xml的声明**
* xml文档声明
` <?xml version=”1.0” encoding=”utf-8” ?>`
**【注意**】:声明必须放在第一行
### **XMl树结构(DOM)**
* XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶"。
```
<?xml version=“1.0” encoding=“UTF-8”?> //文档声明
<user> //根元素
<name>liudehua</name> //子元素
<age>33</age> //子元素
</user>
```
### **xml的语法**
* 标签的规则
1. XML 文档必须有根元素
2. 至少需要一个元素
XML标签是区分大小写(HTML不区分大小写)
3. 不允许空标记存在,所有的标记必须成对
4. 标签的嵌套要正确
5. 标签成对存在并且闭合
* 注释
`<!-- 注释内容-->
`
### **xml元素**
`<name id=“name”>liudehua </name>`
* 分析
1. name 标签名
2. id 属性
3. liudehua 文本内容
* 标签名命名规则:
1. 名称可以包含字母、数字以及其他的字符
### **CDATA**
* 什么是cdata?CDATA(character data)字符数据,不会由解析器解析
像 “<” 和 “&” 字符在 XML 元素中都是非法的。相当于转义
`<! [CDATA[ 内容 ]] >
`
### **DomDocument 类库操作xml**
* **生成xml文件**
```
$xml = new DOMDocument("1.0","UTF-8"); //实例化xml对象
$user=$xml->createElement('user'); //创建一个节点
$name=$xml->createElement('name','vanvan');
$age=$xml->createElement('age','18');
//第一个参数节点名 第二个参数节点值 可以不加 根节点
$xml->formatOutput = true; //属性 为true 格式化输出
$user->appendChild($name);
$user->appendChild($age);
$xml->appendChild($user); //添加节点
$xml->save('van.xml'); //保存到文件 xml
```
* **读取xml文件**
```
$doc = new DOMDocument();
$doc->load("van.xml");
//获取标签对象
$name=$doc->getElementsByTagName("name");
//输出第一个中的值
echo $name->item(0)->nodeValue;
$str ="<user>
<name>venven</name>
<age>18</age>
</user>";
$doc->loadXml($str); //$str xml的字符串
$name=$doc->getElementsByTagName("name");
//输出第一个中的值
echo $name->item(0)->nodeValue;
```
### **simpleXML**
```
$user = simplexml_load_file("van.xml");//文件
echo $user->name;
$str="<user>
<name>旺旺啊</name>
<age>18</age>
</user>";
$user = simplexml_load_string($str); //字符串
echo $user->name;
```