This article describes the method of PHP generating and obtaining XML format data. Share it with everyone for your reference, the details are as follows:
When making data interfaces, we usually need to obtain third-party data interfaces or provide data interfaces to third parties, and these data formats are usually transmitted in XML or JSON format. Here we will introduce how to use PHP to generate XML format data for the third party. Third-party calls and how to obtain XML data provided by third parties.
Generate XML format data
We assume that there is a student information table student in the system, which needs to be provided to a third party for call, and has id, name, sex, age to record the student's name, gender, age and other information respectively.
CREATE TABLE `student` ( `id` int(11) NOT NULL auto_increment, `name` varchar(50) NOT NULL, `sex` varchar(10) NOT NULL, `age` smallint(3) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
First, create the createXML.php file, connect to the database, and obtain data.
include_once ("connect.php"); //连接数据库 $sql = "select * from student"; $result = mysql_query($sql) or die("Invalid query: " . mysql_error()); while ($row = mysql_fetch_array($result)) { $arr[] = array( 'name' => $row['name'], 'sex' => $row['sex'], 'age' => $row['age'] ); }
At this time, the data is saved in $arr. You can use print_r to print the data for testing.
Next, create xml, loop the array, and write data to the node corresponding to xml.
$doc = new DOMDocument('1.0', 'utf-8'); // 声明版本和编码 $doc->formatOutput = true; $r = $doc->createElement_x("root"); $doc->appendChild($r); foreach ($arr as $dat) { $b = $doc->createElement_x("data"); $name = $doc->createElement_x("name"); $name->appendChild($doc->createTextNode($dat['name'])); $b->appendChild($name); $sex = $doc->createElement_x("sex"); $sex->appendChild($doc->createTextNode($dat['sex'])); $b->appendChild($sex); $age = $doc->createElement_x("age"); $age->appendChild($doc->createTextNode($dat['age'])); $b->appendChild($age); $r->appendChild($b); } echo $doc->saveXML();
We called PHP’s built-in class DOMDocument to process and generate xml. Please click here to see the final generated xml format
<?xml version="1.0" encoding="utf-8"?> <root> <data> <name>李王皓</name> <sex>男</sex> <age>21</age> </data> ... </root>
Get XML format data
Now we assume that we want to obtain student information from a third party. The data format is XML. We need to use PHP to parse the XML, and then display or write the parsed data to the local database. The key step here is parsing XML.
PHP has many methods to parse XML. PHP provides a built-in XMLReader class that can sequentially browse through the nodes of the xml file. You can imagine that a cursor walks through the nodes of the entire file and grabs the required content. Using XMLReader is efficient, especially for reading very large xml data. Compared with other methods, using XMLReader consumes very little memory.
header("Content-type:text/html; Charset=utf-8"); $url = "http://www.helloweba.com/demo/importXML/createXML.php"; $reader = new XMLReader(); //实例化XMLReader $reader->open($url); //获取xml $i=1; while ($reader->read()) { if ($reader->nodeType == XMLReader::TEXT) { //判断node类型 $m = $i%3; if($m==1) $name = $reader->value; //读取node值 if($m==2) $sex = $reader->value; if($m==0){ $age = $reader->value; $arr[] = array( 'name' => $name, 'sex' => $sex, 'age' => $age ); } $i++; } } //print_r($arr);
In order to separate the data name, sex and age, we use $i%3 to determine the modulus, because in the obtained xml, the information under the node data exists as 3 child nodes.
Readers who are interested in more PHP-related content can check out the special topics of this site: "Summary of PHP XML file operation skills", "Summary of php date and time usage", "Introduction to php object-oriented programming tutorial", "php Summary of String Usage", "Introduction Tutorial on PHP MySQL Database Operation" and "Summary of PHP Common Database Operation Skills"
I hope this article will be helpful to everyone in PHP programming.