- 浏览: 283664 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (234)
- php (70)
- linux (46)
- apache (9)
- mysql (13)
- oauth (1)
- IT新闻 (18)
- 代码收藏 (20)
- python (2)
- webservice (6)
- 评论 (7)
- asd (0)
- 开源软件 (6)
- 前端 (9)
- 7z (1)
- js (17)
- windows (4)
- cmd (2)
- 开源 (3)
- vim (6)
- windows 软件安装错误 (2)
- 分享 (3)
- search (1)
- node.js (1)
- xmind (1)
- 变成语言 (1)
- drupal (0)
- jquery (2)
- css (7)
- ietester (1)
- 编辑器 (1)
- java (2)
- html5 (1)
- 生活 (1)
- Sublime Text 2 (1)
- 制图 (0)
- sublime (1)
最新评论
-
muxueqz:
我自己写了个开源的:http://muxueqz.top/sk ...
Delicious被Yahoo卖了 -
yangyongnihao:
...
REST与SOAP样式Web 服务的区别 -
wangshaofei:
zhou7707 写道 大神啊,太及时了,我今天服务器上不了 ...
Debian 6 下搭建nginx 1.3 -
zhou7707:
大神啊,太及时了,我今天服务器上不了外网,为搞包依赖折腾一 ...
Debian 6 下搭建nginx 1.3 -
wangshaofei:
bbs_ld 写道一楼说的对啊。如何解决呢?? 高手大人
利用php创建日期选择框
xmltoarray 写道
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
class XmlToArray {
function __construct() {
}
function xml2array($contents, $get_attributes=1, $priority = 'tag') {
if (!$contents)
return array();
if (!function_exists('xml_parser_create')) {
//print "'xml_parser_create()' function not found!";
return array();
}
//Get the XML parser of PHP - PHP must have this module for the parser to work
$parser = xml_parser_create('');
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); # http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, trim($contents), $xml_values);
xml_parser_free($parser);
if (!$xml_values)
return; //Hmm...
//Initializations
$xml_array = array();
$parents = array();
$opened_tags = array();
$arr = array();
$current = &$xml_array; //Refference
//Go through the tags.
$repeated_tag_index = array(); //Multiple tags with same name will be turned into an array
foreach ($xml_values as $data) {
unset($attributes, $value); //Remove existing values, or there will be trouble
//This command will extract these variables into the foreach scope
// tag(string), type(string), level(int), attributes(array).
extract($data); //We could use the array by itself, but this cooler.
$result = array();
$attributes_data = array();
if (isset($value)) {
if ($priority == 'tag')
$result = $value;
else
$result['value'] = $value; //Put the value in a assoc array if we are in the 'Attribute' mode
}
//Set the attributes too.
if (isset($attributes) and $get_attributes) {
foreach ($attributes as $attr => $val) {
if ($priority == 'tag')
$attributes_data[$attr] = $val;
else
$result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr'
}
}
//See tag status and do the needed.
if ($type == "open") {//The starting of the tag '<tag>'
$parent[$level - 1] = &$current;
if (!is_array($current) or (!in_array($tag, array_keys($current)))) { //Insert New tag
$current[$tag] = $result;
if ($attributes_data)
$current[$tag . '_attr'] = $attributes_data;
$repeated_tag_index[$tag . '_' . $level] = 1;
$current = &$current[$tag];
} else { //There was another element with the same tag name
if (isset($current[$tag][0])) {//If there is a 0th element it is already an array
$current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
$repeated_tag_index[$tag . '_' . $level]++;
} else {//This section will make the value an array if multiple tags with the same name appear together
$current[$tag] = array($current[$tag], $result); //This will combine the existing item and the new item together to make an array
$repeated_tag_index[$tag . '_' . $level] = 2;
if (isset($current[$tag . '_attr'])) { //The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset($current[$tag . '_attr']);
}
}
$last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1;
$current = &$current[$tag][$last_item_index];
}
} elseif ($type == "complete") { //Tags that ends in 1 line '<tag />'
//See if the key is already taken.
if (!isset($current[$tag])) { //New Key
$current[$tag] = $result;
$repeated_tag_index[$tag . '_' . $level] = 1;
if ($priority == 'tag' and $attributes_data)
$current[$tag . '_attr'] = $attributes_data;
} else { //If taken, put all things inside a list(array)
if (isset($current[$tag][0]) and is_array($current[$tag])) {//If it is already an array...
// ...push the new element into that array.
$current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
if ($priority == 'tag' and $get_attributes and $attributes_data) {
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
}
$repeated_tag_index[$tag . '_' . $level]++;
} else { //If it is not an array...
$current[$tag] = array($current[$tag], $result); //...Make it an array using using the existing value and the new value
$repeated_tag_index[$tag . '_' . $level] = 1;
if ($priority == 'tag' and $get_attributes) {
if (isset($current[$tag . '_attr'])) { //The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset($current[$tag . '_attr']);
}
if ($attributes_data) {
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
}
}
$repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken
}
}
} elseif ($type == 'close') { //End of tag '</tag>'
$current = &$parent[$level - 1];
}
}
return $xml_array;
}
}
?>
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
class XmlToArray {
function __construct() {
}
function xml2array($contents, $get_attributes=1, $priority = 'tag') {
if (!$contents)
return array();
if (!function_exists('xml_parser_create')) {
//print "'xml_parser_create()' function not found!";
return array();
}
//Get the XML parser of PHP - PHP must have this module for the parser to work
$parser = xml_parser_create('');
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, "UTF-8"); # http://minutillo.com/steve/weblog/2004/6/17/php-xml-and-character-encodings-a-tale-of-sadness-rage-and-data-loss
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, trim($contents), $xml_values);
xml_parser_free($parser);
if (!$xml_values)
return; //Hmm...
//Initializations
$xml_array = array();
$parents = array();
$opened_tags = array();
$arr = array();
$current = &$xml_array; //Refference
//Go through the tags.
$repeated_tag_index = array(); //Multiple tags with same name will be turned into an array
foreach ($xml_values as $data) {
unset($attributes, $value); //Remove existing values, or there will be trouble
//This command will extract these variables into the foreach scope
// tag(string), type(string), level(int), attributes(array).
extract($data); //We could use the array by itself, but this cooler.
$result = array();
$attributes_data = array();
if (isset($value)) {
if ($priority == 'tag')
$result = $value;
else
$result['value'] = $value; //Put the value in a assoc array if we are in the 'Attribute' mode
}
//Set the attributes too.
if (isset($attributes) and $get_attributes) {
foreach ($attributes as $attr => $val) {
if ($priority == 'tag')
$attributes_data[$attr] = $val;
else
$result['attr'][$attr] = $val; //Set all the attributes in a array called 'attr'
}
}
//See tag status and do the needed.
if ($type == "open") {//The starting of the tag '<tag>'
$parent[$level - 1] = &$current;
if (!is_array($current) or (!in_array($tag, array_keys($current)))) { //Insert New tag
$current[$tag] = $result;
if ($attributes_data)
$current[$tag . '_attr'] = $attributes_data;
$repeated_tag_index[$tag . '_' . $level] = 1;
$current = &$current[$tag];
} else { //There was another element with the same tag name
if (isset($current[$tag][0])) {//If there is a 0th element it is already an array
$current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
$repeated_tag_index[$tag . '_' . $level]++;
} else {//This section will make the value an array if multiple tags with the same name appear together
$current[$tag] = array($current[$tag], $result); //This will combine the existing item and the new item together to make an array
$repeated_tag_index[$tag . '_' . $level] = 2;
if (isset($current[$tag . '_attr'])) { //The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset($current[$tag . '_attr']);
}
}
$last_item_index = $repeated_tag_index[$tag . '_' . $level] - 1;
$current = &$current[$tag][$last_item_index];
}
} elseif ($type == "complete") { //Tags that ends in 1 line '<tag />'
//See if the key is already taken.
if (!isset($current[$tag])) { //New Key
$current[$tag] = $result;
$repeated_tag_index[$tag . '_' . $level] = 1;
if ($priority == 'tag' and $attributes_data)
$current[$tag . '_attr'] = $attributes_data;
} else { //If taken, put all things inside a list(array)
if (isset($current[$tag][0]) and is_array($current[$tag])) {//If it is already an array...
// ...push the new element into that array.
$current[$tag][$repeated_tag_index[$tag . '_' . $level]] = $result;
if ($priority == 'tag' and $get_attributes and $attributes_data) {
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
}
$repeated_tag_index[$tag . '_' . $level]++;
} else { //If it is not an array...
$current[$tag] = array($current[$tag], $result); //...Make it an array using using the existing value and the new value
$repeated_tag_index[$tag . '_' . $level] = 1;
if ($priority == 'tag' and $get_attributes) {
if (isset($current[$tag . '_attr'])) { //The attribute of the last(0th) tag must be moved as well
$current[$tag]['0_attr'] = $current[$tag . '_attr'];
unset($current[$tag . '_attr']);
}
if ($attributes_data) {
$current[$tag][$repeated_tag_index[$tag . '_' . $level] . '_attr'] = $attributes_data;
}
}
$repeated_tag_index[$tag . '_' . $level]++; //0 and 1 index is already taken
}
}
} elseif ($type == 'close') { //End of tag '</tag>'
$current = &$parent[$level - 1];
}
}
return $xml_array;
}
}
?>
发表评论
-
使ie支持html5
2013-03-18 17:41 927<!--[if IE]> < ... -
js防止冒泡事件
2012-07-10 18:20 795var e = (event) ? event : wi ... -
商品放大镜代码
2012-07-10 17:39 747<!DOCTYPE html PUBLIC &qu ... -
jquery-tree树型插件
2012-05-18 15:40 786jquery-tree树型插件 -
javaEE学习笔记
2012-05-14 22:00 9301.错误描述 增量部署 http://localhos ... -
添加和删除页面元素
2011-10-27 13:07 751function Button1_onclick( ... -
javascript正则表达式
2011-09-06 16:09 764js正则表达式是很多js开发人员比较头疼的事情,也很多人不愿意 ... -
js(javascript)事件大全:事件、页面事件、表单事件、滚动字幕事件、编辑事件、数据绑定、外部事件
2011-08-18 17:29 1322javascript 一般事 ... -
JavaScript实现 页面滚动图片加载
2011-08-18 17:18 958现在的页面大多都具有的特点 - 内容丰富,图片较多;像我们 ... -
jQuery - Selectors - lastChild选择最后一个子元素
2011-08-18 14:47 2347Selectors/lastChild From ... -
javascript代码,定时
2011-08-18 14:25 669//将长的列补到短的列 ... -
(转)php抓取网页内容汇总
2011-07-22 10:09 4865①、使用php 获取网页 内容 http ... -
SQL Server 2000安装图解
2011-07-11 16:37 17572007-12-22 16:32 ... -
vim 通用设置
2011-06-23 22:13 1839转自: http://hi.baidu.com/kuangxi ... -
javascript验证e-mail
2011-06-01 15:16 960<html> <head> ... -
javascript实现cookie
2011-06-01 15:04 691<html> <head> ... -
html标签
2011-05-30 23:44 0style格式属性: <body style=&quo ... -
利用php创建日期选择框
2011-05-30 00:50 3404<form action="" me ... -
js验证表单大全
2011-05-23 11:55 745//js验证表单大全 //1. 长度限制 //<sc ... -
php_login_cookie
2011-03-20 15:06 1092<?php if ($_GET[out]) ...
相关推荐
然而,有时我们处理的数据格式是数组,这时就需要将数组转换成XML以便与其他系统进行交互。"PHP的Array2xml"就是这样一个工具,它是一个类文件,专为PHP4.0及更高版本设计,用于将PHP数组转换为XML字符串。 Array2...
`xml2json0.php`可能是一个实现XML到JSON转换的脚本,而`Xmltoarray.php`则可能是将XML转换为数组的实现。这两个文件可以作为实际操作的例子,帮助理解XML处理的流程。 总结来说,XML和JSON之间的转换在PHP中是常见...
这可以通过在类中定义其他类或者使用`XmlArray`和`XmlArrayItem`特性来实现。此外,还可以使用`XmlAttribute`特性来处理XML属性。 在提供的"XMLtoClass.sln"和"XMLtoClass"文件中,很可能是包含了一个示例项目,该...
在客户端和服务器之间进行数据交换时,有时需要将XML转换为PHP数组,反之亦然。本文将详细介绍`array2xml`和`xml2array`这两个函数,以及如何实现XML和数组之间的互相转化。 首先,我们来看`array2xml`函数。这个...
如果需要处理更复杂的XML转换,可以考虑使用PHP内置的DOMDocument类或者SimpleXMLElement类。 总的来说,Array2xml类提供了一个简单的方法,将PHP数组转换为XML字符串,方便在不同系统间进行数据交换。然而,对于...
本篇文章将深入探讨如何将XML转换为指定类型的List数组,并涉及多层数据结构的处理。 1. **Java XML解析库** 在Java中,有多种库可用于解析XML文件,如DOM(Document Object Model)、SAX(Simple API for XML)和...
在Flex中,我们可以使用mx.collections.XMLListCollection将XML转换为可绑定的数据集合。例如: ```xml <xml> <item>Item 1.1 <item>Item 1.2 <item>Item 2.1 </xml> ``` 然后在Flex代码中,你可以...
在 PHP 中,数组和 XML 之间的转换是一种常见的需求,特别是在数据交换、存储或者解析 XML 文件时。本篇文章将深入探讨如何在 PHP 中实现数组到 XML 的转换,并提供两种不同的实现方式。 首先,我们来看第一种方法...
将xml转换为数组 该软件包提供了一个非常简单的类,可以将xml字符串转换为数组。 受Spatie的启发 :red_heart_selector: 安装 您可以通过composer安装此软件包。 composer require vyuldashev/xml-to-array 用法 ...
在PHP编程中,有时我们需要将数据结构转换成XML格式,以便于数据交换或者与XML相关的服务进行交互。本文介绍了一种方法,展示了如何通过...这些资源将帮助你进一步提升PHP编程技能,特别是涉及到数组和XML转换的部分。
轻松地将有效的xml转换为php数组。 安装 通过composer安装: composer require mtownsend/xml-to-array 快速开始 使用课程 use Mtownsend \ XmlToArray \ XmlToArray ; $ xml = <<<XML <?xml version=...
有两种方法可以将XML转换为数组,一种是使用`DOMDocument`和`DOMXpath`,另一种是使用`simplexml_load_string`函数。这里我们先介绍第一种: ```php $resultArray = []; foreach ($xpath->query('//root/item')...
将数组转换为xml 该程序包提供了一个非常简单的类,可以将数组转换为xml字符串。支持我们 我们投入了大量资源来创建。 您可以通过来支持我们。 非常感谢您从家乡寄给我们一张明信片,其中提及您使用的是哪个包装。 ...
- **XML转数组**:可以使用`iterator_to_array()`结合`SimpleXMLElement`的迭代器功能,将XML转换为PHP数组。或者使用DOMXPath查询XML节点,再进一步处理成数组。 - **数组转XML**:SimpleXML提供了一个方便的方法`...
var xmlArray:Array = []; for each (var node:XML in xml.children()) { xmlArray.push(node.toString()); } displayXMLContent(xmlArray); // 将数组传递给显示函数 } ``` 此函数遍历XML的子节点,并将每个...
本篇文章将详细介绍如何将OpenCV中的XML矩阵转换为MATLAB可读的矩阵。 首先,OpenCV使用XML或YAML格式存储一些结构化数据,如特征点、相机内参等。这些文件可以用`cv::FileStorage`类来读取和写入。XML文件是一种...
因此,如何有效地将XML转换为数组成为了一个常见的问题。 #### 核心知识点 1. **XML简介** - XML是一种标准的、开放的文件格式,被广泛应用于不同系统之间的数据交换。 - XML文件具有良好的自描述性和层次性,...
接下来,我们需要将读取到的文本数据解析成结构化的XML。这通常涉及到字符串处理和正则表达式。例如,如果日志文件每行都代表一条记录,且每条记录由逗号分隔,我们可以使用 `explode()` 函数分割行,然后根据逗号...