PHP操作XML的教程详解
吾爱主题
阅读:214
2022-11-10 16:05:00
评论:0
php操作XML
?1 2 3 4 5 6 7 8 9 10 11 12 13 | <? xml version = "1.0" encoding = "utf-8" ?> < article > < item > < title size = "1" >title1</ title > < content >content1</ content > < pubdate >2009-10-11</ pubdate > </ item > < item > < title size = "1" >title2</ title > < content >content2</ content > < pubdate >2009-11-11</ pubdate > </ item > </ article > |
直接生成字符串
方法1:使用纯粹的PHP代码生成字符串,并把这个字符串写入一个以XML为后缀的文件。这是最原始的生成XML的方法,不过有效!
PHP代码如下:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?PHP $data_array = array ( array ( 'title' => 'title1' , 'content' => 'content1' , 'pubdate' => '2009-10-11' , ), array ( 'title' => 'title2' , 'content' => 'content2' , 'pubdate' => '2009-11-11' , ) ); $title_size = 1; $xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" ; $xml .= "<article>\n" ; foreach ( $data_array as $data ) { $xml .= create_item( $data [ 'title' ], $title_size , $data [ 'content' ], $data [ 'pubdate' ]); } $xml .= "</article>\n" ; echo $xml ; // 创建XML单项 function create_item( $title_data , $title_size , $content_data , $pubdate_data ) { $item = "<item>\n" ; $item .= "<title size=\"" . $title_size . "\">" . $title_data . "</title>\n" ; $item .= "<content>" . $content_data . "</content>\n" ; $item .= " <pubdate>" . $pubdate_data . "</pubdate>\n" ; $item .= "</item>\n" ; return $item ; } ?> |
DomDocument
方法2:使用DomDocument生成XML文件
创建节点使用createElement方法,
创建文本内容使用createTextNode方法,
添加子节点使用appendChild方法,
创建属性使用createAttribute方法
PHP代码如下:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | <?PHP $data_array = array ( array ( 'title' => 'title1' , 'content' => 'content1' , 'pubdate' => '2009-10-11' , ), array ( 'title' => 'title2' , 'content' => 'content2' , 'pubdate' => '2009-11-11' , ) ); // 属性数组 $attribute_array = array ( 'title' => array ( 'size' => 1 ) ); // 创建一个XML文档并设置XML版本和编码。。 $dom = new DomDocument( '1.0' , 'utf-8' ); // 创建根节点 $article = $dom ->createElement( 'article' ); $dom ->appendchild( $article ); foreach ( $data_array as $data ) { $item = $dom ->createElement( 'item' ); $article ->appendchild( $item ); create_item( $dom , $item , $data , $attribute_array ); } echo $dom ->saveXML(); function create_item( $dom , $item , $data , $attribute ) { if ( is_array ( $data )) { foreach ( $data as $key => $val ) { // 创建元素 $ $key = $dom ->createElement( $key ); $item ->appendchild($ $key ); // 创建元素值 $text = $dom ->createTextNode( $val ); $ $key ->appendchild( $text ); if (isset( $attribute [ $key ])) { // 如果此字段存在相关属性需要设置 foreach ( $attribute [ $key ] as $akey => $row ) { // 创建属性节点 $ $akey = $dom ->createAttribute( $akey ); $ $key ->appendchild($ $akey ); // 创建属性值节点 $aval = $dom ->createTextNode( $row ); $ $akey ->appendChild( $aval ); } } // end if } } // end if } // end function ?> |
XMLWriter
方法3:使用XMLWriter类创建XML文件
此方法在PHP 5.1.2后有效
另外,它可以输出多种编码的XML,但是输入只能是utf-8
PHP代码如下:
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <?PHP $data_array = array ( array ( 'title' => 'title1' , 'content' => 'content1' , 'pubdate' => '2009-10-11' , ), array ( 'title' => 'title2' , 'content' => 'content2' , 'pubdate' => '2009-11-11' , ) ); // 属性数组 $attribute_array = array ( 'title' => array ( 'size' => 1 ) ); $xml = new XMLWriter(); $xml ->openUri( "php://output" ); // 输出方式,也可以设置为某个xml文件地址,直接输出成文件 $xml ->setIndentString( ' ' ); $xml ->setIndent(true); $xml ->startDocument( '1.0' , 'utf-8' ); // 开始创建文件 // 根结点 $xml ->startElement( 'article' ); foreach ( $data_array as $data ) { $xml ->startElement( 'item' ); if ( is_array ( $data )) { foreach ( $data as $key => $row ) { $xml ->startElement( $key ); if (isset( $attribute_array [ $key ]) && is_array ( $attribute_array [ $key ])) { foreach ( $attribute_array [ $key ] as $akey => $aval ) { // 设置属性值 $xml ->writeAttribute( $akey , $aval ); } } $xml ->text( $row ); // 设置内容 $xml ->endElement(); // $key } } $xml ->endElement(); // item } $xml ->endElement(); // article $xml ->endDocument(); $xml -> flush (); ?> |
SimpleXML
方法4:使用SimpleXML创建XML文档
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | <?PHP $data_array = array ( array ( 'title' => 'title1' , 'content' => 'content1' , 'pubdate' => '2009-10-11' , ), array ( 'title' => 'title2' , 'content' => 'content2' , 'pubdate' => '2009-11-11' , ) ); // 属性数组 $attribute_array = array ( 'title' => array ( 'size' => 1 ) ); $string = <<<XML <?xml version= '1.0' encoding= 'utf-8' ?> <article> </article> XML; $xml = simplexml_load_string( $string ); foreach ( $data_array as $data ) { $item = $xml ->addChild( 'item' ); if ( is_array ( $data )) { foreach ( $data as $key => $row ) { $node = $item ->addChild( $key , $row ); if (isset( $attribute_array [ $key ]) && is_array ( $attribute_array [ $key ])) { foreach ( $attribute_array [ $key ] as $akey => $aval ) { // 设置属性值 $node ->addAttribute( $akey , $aval ); } } } } } echo $xml ->asXML(); ?> |
到此这篇关于PHP操作XML的教程详解的文章就介绍到这了,更多相关PHP操作XML内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.cnblogs.com/tangchuanyang/p/3898736.html
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。