1.xml概念
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言
2.xml和html的区别
a.可扩展性:xml可以自己定义新的标记,而html都是已规定的标记
b.数据和显示:xml数据和显示是分离的,html是整合在一起
c.侧重点:xml用来描述数据结构,html用来如何表现数据(各种规定的样式和标签)
d.语法:xml严格要求嵌套和配对,html不要求
3.xml主要是为了传输数据,而不是为了显示数据
4.语法规范:
a.任何起始标签都必须有一个结束标签,即配对闭合
<root></root>
b.标签不能互相嵌套
错误:<root><a></root></a>
正确:<root><a></a></root>
c.属性必须有值,且属性值必须用引号包含起来
如:<root><a attr='wyz'></a></root>
d.特殊字符要用实体符号来替换
如:> 用 >;‘’用"
注:php还可以通过SimpleXMLElement和DOMXPath解析。XPath可以快速读取节点文本数据,大数据读取可以考虑。
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言
2.xml和html的区别
a.可扩展性:xml可以自己定义新的标记,而html都是已规定的标记
b.数据和显示:xml数据和显示是分离的,html是整合在一起
c.侧重点:xml用来描述数据结构,html用来如何表现数据(各种规定的样式和标签)
d.语法:xml严格要求嵌套和配对,html不要求
3.xml主要是为了传输数据,而不是为了显示数据
4.语法规范:
a.任何起始标签都必须有一个结束标签,即配对闭合
<root></root>
b.标签不能互相嵌套
错误:<root><a></root></a>
正确:<root><a></a></root>
c.属性必须有值,且属性值必须用引号包含起来
如:<root><a attr='wyz'></a></root>
d.特殊字符要用实体符号来替换
如:> 用 >;‘’用"
注:如果有大段文本包含特殊字符,可以用CDATA(微信开发xml就有这个东东)来存放
XML文件
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>php高级编程</name>
<price>12</price>
</book>
<book>
<name>php低级编程</name>
<price>11</price>
</book>
</books>
DOM解析XML
$dom = new DOMDocument('1.0', 'utf-8'); //创建DOM解析对象
$dom->load('book.xml'); //载入解析文档文件
$books = $dom->getElementsByTagName('book'); //得到所有书本的DOMNodeList对象列表
//获取节点内容
echo '有几本书:'.$books->length."<br/>";
foreach ($books as $book)
{
$bookname = $book->getElementsByTagName('name'); //得到书本的名称DOMNodeList对象列表
$bookprice = $book->childNodes->item(3); //得到书本的价格DOMElement对象,childNodes包含换行节点
echo 'bookname:'.$bookname->item(0)->nodeValue."<br/>";
echo 'bookprice:'.$bookprice->nodeValue.'<br/>';
// $bookprice->nodeValue = 15; //修改节点内容
}
//添加节点内容
$cbook = $dom->createElement('book');
$cbookname = $dom->createElement('name');
$cbookname_text = $dom->createTextNode('php中级编程');
$cbookname->appendChild($cbookname_text);
$cbook->appendChild($cbookname);
$dom->getElementsByTagName('books')->item(0)->appendChild($cbook);
//删除节点内容
$book3 = $dom->getElementsByTagName('book')->item(2); //获取对象DOMElement对象
$book3->parentNode->removeChild($book3); //根据父亲节点对象移除获取的子DOMElement对象
$dom->save('book.xml');
注:php还可以通过SimpleXMLElement和DOMXPath解析。XPath可以快速读取节点文本数据,大数据读取可以考虑。