The example in this article describes PHP's XML file interpretation class and its usage, which is a very practical technique. Share it with everyone for your reference. The details are as follows:
XMLParser.class.php class file is as follows:
<?php /** XML 文件分析类 * Date: 2013-02-01 * Author: fdipzone * Ver: 1.0 * * func: * loadXmlFile($xmlfile) 读入xml文件输出Array * loadXmlString($xmlstring) 读入xmlstring 输出Array */ class XMLParser{ /** 读取xml文件 * @param String $xmlfile * @return Array */ public function loadXmlFile($xmlfile){ // get xmlfile content $xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : ''; // parser xml list($flag, $data) = $this->parser($xmlstring); return $this->response($flag, $data); } /** 读取xmlstring * @param String $xmlstring * @return Array */ public function loadXmlString($xmlstring){ // parser xml list($flag, $data) = $this->parser($xmlstring); return $this->response($flag, $data); } /** 解释xml内容 * @param String $xmlstring * @return Array */ private function parser($xmlstring){ $flag = false; $data = array(); // check xml format if($this->checkXmlFormat($xmlstring)){ $flag = true; // xml to object $data = simpleXML_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA); // object to array $this->objectToArray($data); } return array($flag, $data); } /** 检查xml格式是否正确 * @param String $xmlstring * @return boolean */ private function checkXmlFormat($xmlstring){ if($xmlstring==''){ return false; } $xml_parser_obj = xml_parser_create(); if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){ // 1:success 0:fail return true; }else{ return false; } } /** object 转 Array * @param object $object * @return Array */ private function objectToArray(&$object){ $object = (array)$object; foreach($object as $key => $value){ if($value==''){ $object[$key] = ""; }else{ if(is_object($value) || is_array($value)){ $this->objectToArray($value); $object[$key] = $value; } } } } /** 输出返回 * @param boolean $flag true:false * @param Array $data 转换后的数据 * @return Array */ private function response($flag=false, $data=array()){ return array($flag, $data); } } ?>
Demo sample program is as follows:
<?php require "XMLParser.class.php"; $xmlfile = 'file.xml'; $xmlstring = '<?xml version="1.0" encoding="utf-8"?> <xmlroot> <status>1000</status> <info></info> <result><id>100</id> <name>fdipzone</name> <gender>1</gender> <age>28</age> </result> </xmlroot>'; echo '<pre class="brush:php;toolbar:false">'; $xml_parser = new XMLParser(); echo "response xmlfile\r\n"; list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile); if($flag){ print_r($xmldata); } echo "response xmlstring\r\n"; list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring); if($flag){ print_r($xmldata); } echo ''; ?>
For information about PHP’s XML predefined constants, please refer to the official documentation:
http://www.php.net/manual/en/libxml.constants.php
I hope this article will be helpful to everyone’s learning of PHP programming.
#Use dom to generate xml. Note that there will be no spaces in the generated xml.
$dom=new DOMDocument('1.0','utf-8');
$path="test.xml"; // $path is the storage path of the xml file.
$module=$dom->createElement('newmodule');// root node
$dom->appendChild($module);
$year=$dom ->createElement('year'); // add attribute node
$name=$dom->createAttribute('name');
$name->nodeValue="Latest News";
$year->setAttributeNode($name);
$module->appendChild($year);
$news=$dom->createElement('news');
$year->appendChild($news);
$date=$dom->createElement('date');
$date_value=$dom->createTextNode('01-24' );
$date->appendChild($date_value);
$news->appendChild($date);
$title=$dom->createElement('title') ;
$title_value=$dom->createTextNode('');
$title->appendChild($title_value);
$news- >appendChild($title);
$info=$dom->createElement('info');
$info_value=$dom->createTextNode(' ]]>');
$ info->appendChild($info_value);
$news->appendChild($info);
echo $dom->saveXML();
$dom->save( $path);
?>
<%
dim xml,objNode,objAtr,nCntChd,nCntAtr
Set xml=Server.CreateObject("Microsoft.XMLDOM")
xml.Async=False
xml.Load( Server.MapPath("test.xml"))
Set objNode=xml.documentElement
nCntChd=objNode.ChildNodes.length-1
'This can define asp to read xml files The value to be read is determined by passing this value
for i=0 to nCntChd
set objAtr=objNode.ChildNodes.item(i)
nCntAtr=objAtr.Attributes. length-1
'Traverse all the record items in a record, the record starts from 0
for j=0 to nCntAtr
response.write objAtr.Attributes.item (j).Text&"
"
next
response.write "
"
next
Set objAtr=Nothing
Set objNode=Nothing
Set xml=Nothing
%>
Reference: homepage.yesky.com/369/3074869.shtml