设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP怎样操作XML,代码指什么?

发布时间:2023-02-03 11:10 所属栏目:121 来源:互联网
导读:关于PHP怎样操作XML,代码是什么?的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。 php操作XML ?xml version=1.0 encoding=utf-8?
  关于“PHP怎样操作XML,代码是什么?”的知识有一些人不是很理解,对此小编给大家总结了相关内容,具有一定的参考借鉴价值,而且易于学习与理解,希望能对大家有所帮助,有这个方面学习需要的朋友就继续往下看吧。
 
  php操作XML
 
  <?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代码如下:
 
  <?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代码如下:
 
  <?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代码如下:
 
  <?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文档
 
  <?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,代码是什么?都有更深刻的体会了吧。
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读