Home  >  Article  >  Backend Development  >  php: XMLWriter's method of operating xml

php: XMLWriter's method of operating xml

黄舟
黄舟Original
2017-07-17 16:20:491917browse

The example in this article describes the method of PHP operating xml based on XMLWriter. Share it with everyone for your reference, the details are as follows:

Following yesterday's lesson, let's learn a way to read and write XML, which mainly revolves around XMLWriter and XMLReader. The former is used to generate xml, and the latter is used to read and parse xml. Without further ado, let’s take a look

1. Generate xml file or string

<?php
 header("Content-type: text/html; charset=utf-8");
 $xml=new XMLWriter();
 //$xml->openUri("php://output");
 //设置输出,如果不需要保存成文件则使用上面被注释掉那句
 $xml->openUri("stu2.xml");
 //设置缩进字符串,这里设置为空串(这句和下面的setIntent也可以不要)
 $xml->setIndentString(&#39;&#39;);
 $xml->setIndent(true);
 //xml文档开始
 $xml->startDocument(&#39;1.0&#39;, &#39;utf-8&#39;);
 //创建根节点
 $xml->startElement("StudentInfo");
 $xml->startElement("Item");
 //添加属性
 $xml->writeAttribute("type","1");
 $xml->startElement("id");
 $xml->text("01");
 $xml->endElement();
 $xml->startElement("name");
 $xml->text("刘惜君");
 $xml->endElement();
 $xml->endElement();
 $xml->endElement();
 $xml->endDocument();
 //header("Content-type: text/xml");
 //取得缓冲区里的xml字符串
 //echo $xml->outputMemory();
?>

The characteristic of this method is that an endElement is required after each tag ends, and the document needs to be ended after the xml is spliced. There is a feeling of "layers of wrapping"

2. Parsing xml

<?php
 header("Content-type: text/html; charset=utf-8");
 $xml=new XMLReader();
//载入xml文件,如果是字符串直接使用xml方法
 $xml->open("student.xml");
//开始读取xml
 while($xml->read()){
   //根据节点类型和元素名称取得文本节点或属性
  if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == &#39;item&#39;) {
     print $xml->getAttribute("id") . "</br>";
   }
  if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == &#39;name&#39;) {
     //移动指针到下一个节点
     $xml->read();
     //取得文本节点的值
     print $xml->value."</br>";
  }
  if ($xml->nodeType == XMLREADER::ELEMENT && $xml->localName == &#39;age&#39;) {
     $xml->read();
     print $xml->value."</br>";
  }
 }
?>

This way of parsing xml is more efficient, if any If you don’t understand the place, it is recommended to check the PHP development manual

The content of the parsed file is as follows

<?xml version="1.0" encoding="utf-8"?>
<UsersInfo>
<item id="01">
<name>冯绍峰</name>
<age>30</age>
</item>
<item id="02">
<name>潘玮柏</name>
<age>29</age>
</item>
</UsersInfo>

The following is the parsed result

The above is the detailed content of php: XMLWriter's method of operating xml. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn