### **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;
```