第二十二章:PHP与XML技术
1:XML(eXtensible Markup Language:扩展性标记语言,是用来描述其他语言的语言,允许用户设计自己的标记)概述
2:XML文档结构
1)XML声明——XML声明在文档中只能出现一次,而且必须是在第一行。声明包括XML版本、编码信息等
<?xml version="1.0" encoding="gb2312" standalone="yes" ?>
2)处理指令:<?处理指令名 处理执行行信息 ?>
<?xml-stylesheet type="text/css" href="Book.css" ?>
3)注释—— "<!--"和"-->"
4)XML元素
<标签 属性名="属性值">数据内容</标签>
5)使用CDATA标记——在XML中,特殊字符">"、"<" 和 "&"的输入需要使用实体引用来处理
但如果遇到大量的特殊符号需要输入,则使用 CDATA(Character data,字符数据)标记,在CDATA标记段的内容都会被当做纯文本数据处理:
<![CDTA][
...
]]>
6)命名空间——命名空间通过在元素前面增加一个前缀来保证元素和属性的唯一性,重要用途是用于融会不同的XML文档
<标签名称 xmlns:前缀名称="URL">
3:在PHP中创建XML文档
header("Content-type:text/xml"); echo '<?xml version="1.0" encoding="gb2312"?>'; echo '计算机图书'; echo '<PHP>'; echo '<书名>PHP项目开发</书名>'; ......
4:SimpleXML函数
header("Content-Type:text/xml;charset=utf-8"); //第一种方法,将指定的文件解析到内存中 $xml_1 = simlexml_load_file("5.xml"); print_r($xml_1); //第二种方法,将创建的字符串解析到内存中 $str = <<<XML <?xml version='1.0' encoding='gb2312'?> <Object> <ComputerBook> <title>入门到精通</title> </ComputerBook> </Object> XML; $xml_2 = simple_load_string($str); echo '<p>'; print_r($xml_2); //第三种方法,将一个使用DOM函数创建的DomDocument对象导入到内存中 $dom = new domDocument(); $dom->loadXML($str); $xml_3 = simplexml_import_dom($dom); echo '<p>'; print_r($xml_3);
使用SimpleXML对象中的children()函数和foreach循环语句可以遍历所有子节点元素
$xml = simplexml_load_string($str); //循环输出根节点 foreach ($xml->children() as $layer_one ){ print_r($layer_one); echo '<br>'; //循环输出第二层根节点 foreach($layer_one->children() as $layer_two){ print_r($layer_two); echo '<br>'; } }
遍历所有属性—— attributes() 方法
访问特定节点元素和属性
$xml[name] ; $xml->book[0]->computerbook
修改XML数据
$xml->book->computerbook['type'] = iconv('gb2312', 'utf-8', 'PHP程序员必备工具');
iconv()函数是转换编码函数。上面是将字符串"PHP程序员必备工具"从gb2312的编码格式转换成utf-8编码格式
保存XML文档——使用asXML()
$xml = simplexml_load_file('10.xml'); $xml->book->computerbook['type'] = iconv('gb2312','utf-8','PHP程序员必备工具'); $xml->book->computerbook = iconv('gb2312','utf-8','PHP函数参考'); //格式化对象$xml $modi = $xml->asXML(); //将对象保存到10.xml文档中 file_put_contents('10.xml', $modi); //程序读取xml文档 $str = file_get_contents('10.xml'); echo $str;
动态创建XML文档
$dom = new DomDocument('1.0','gb2312'); $object = $dom->createElement('object'); $dom->appendChild($object); $book = $dom->createElement('book'); $object->appendChild($book); $computerbook = $dom->createElement('computerbook'); $book->appendChild($computerbook); $type = $dom->createAttribute('type'); $computerbook->appendChild($type); $type_value = $dom->createTextNode('computer'); $type->appendChild($type_value); $bookname = $dom->createElement('bookname'); $computerbook->appendChild($bookname); $bookname_value = $dom->createTextNode(iconv('gb2312','utf-8','PHP从入门到精通')); $bookname->appendChild($bookname_value); echo $dom->saveXML();
第二十三章:PHP与Ajax技术
1:Ajax核心—— XMLHttpRequest技术,它是一个具有应用程序接口的javascript对象,能使用超文本传输协议(HTTP)连接服务器