使用PHP生成XML文件的四种方法

   使用PHP生成XML文件的四种方法

  

  

 

  

  

  content1

2009-10-11

  

  

  

  content2

2009-11-11

  

  

 

  【直接生成字符串】

  方法1:使用纯粹的PHP代码生成字符串,并把这个字符串写入一个以XML为后缀的文件。这是最原始的生成XML的方法,不过有效!

  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 = "n";

  $xml .= "

n";

 

  foreach ($data_array as $data) {

  $xml .= create_item($data['title'], $title_size, $data['content'], $data['pubdate']);

  }

  $xml .= "

n";

 

  echo $xml;

  // 创建XML单项

  function create_item($title_data, $title_size, $content_data, $pubdate_data)

  {

  $item = "n";

  $item .= "n";

  $item .= "" . $content_data . "n";

  $item .= "
" . $pubdate_data . "
n";

  $item .= "n";

  return $item;

  }

  ?>

  【DomDocument】

  方法2:使用DomDocument生成XML文件

  创建节点使用createElement方法,

  创建文本内容使用createTextNode方法,

  添加子节点使用appendChild方法,

  创建属性使用createAttribute方法

  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代码如下:

  

  $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文档

  

  $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 = 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();

  ?>

时间: 2024-09-12 05:40:31

使用PHP生成XML文件的四种方法的相关文章

Android 解析XML 文件的四种方法总结_Android

java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以

Java解析XML文件的四种方法

1)DOM(JAXP Crimson解析器)     DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以在任何时候在树中上下导航,而不是像

Android 解析XML 文件的四种方法总结

java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以

jQuery处理XML文件的几种方法_jquery

XML和HTML都是标记语言,语法形式非常相似,同属于一个语言体系.对于HTML的解析,我是使用jQuery非常方便,其实,我们也可以用jquery解析XML,也是同样的方便. 如果你用过Java.PHP等语言解析过XML,相信会跟我有相同的感觉,那就是很麻烦.改用jQuery来读取.分析.操作XML后,给人意想不到的轻松感.下面我们来看看使用jQuery处理XML文件的几种形式方法. 使用JavaScript常规方法解析XML var xmlDoc = request.responseXML;

用ASP将数据读数导出EXCEL文件的四种方法

excel|导出excel|数据 作者:tonny 出自:伟网动力 http://www.weiw.com/如需转载,请写明出处. 作者序:这类知识点,在网上有很多,在此本人只是做一个总结. 一.用OWC什么是OWC? OWC是Office Web Compent的缩写,即Microsoft的Office Web组件,它为在Web中绘制图形提供 了灵活的同时也是最基本的机制.在一个intranet环境中,如果可以假设客户机上存在特定的浏览器和一 些功能强大的软件(如IE5和Office 2000

C#读取CSV文件的四种方法

Code 1: 用一个System.Web.UI.HtmlControls.HtmlInputFile去handle文件选取. 以下是button click event中的code,用来执行当文件选取了之后读取文件的内容. 1 System.Web.HttpPostedFile input = Request.Files[0]; 2 3 if (input != null && input.ContentLength != 0) 4 { 5 string path = input.Fil

java 生成XML文件后,能不能去掉其中的根节点,但是不能删除根节点中的子节点内容

问题描述 java 生成XML文件后,能不能去掉其中的根节点,但是不能删除根节点中的子节点内容 比如 这个,生成的XML文件格式内容为: <?xml version=""1.0"" encoding=""UTF-8""?> <!--查询行号--> <!--机构码--> <!--公共交易机构名称--> <!--交易来源--> <!--交易名称--> <

php 解析xml 的四种方法详细介绍_php技巧

php 解析xml 的四种方法 XML处理是开发过程中经常遇到的,PHP对其也有很丰富的支持,本文只是对其中某几种解析技术做简要说明,包括:Xml parser, SimpleXML, XMLReader, DOMDocument. 1. XML Expat Parser: XML Parser使用Expat XML解析器.Expat是一种基于事件的解析器,它把XML文档视为一系列事件.当某个事件发生时,它调用一个指定的函数处理它.Expat是无验证的解析器,忽略任何链接到文档的DTD.但是,如

实现动画SWF文件全屏效果的四种方法

如何让SWF文件全屏的效果? 第一种方法:不显示浏览器菜单栏.工具栏的全屏.这种全屏稍稍复杂,也与FLASH的设置无关,但要借 助JavaScript来完成.方法是:在HTML文件中<head></head>间加入以下代码: <script language="JavaScript">  <!--  window.open("nfd.swf","","fullscreen=1,menubar=n