此方法要求传入一个节点(DOMNode),返回该节点下的所以子节点组成的数组。
比如一个XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<files>
<file>
<filename>file1.txt</filename>
<createdate>2009-09-07</createdate>
<modifytrack>
<date>2009-09-08</date>
</modifytrack>
</file>
<file>
<filename>file2.txt</filename>
<createdate>2009-09-01</createdate>
<modifytrack>
<date>2009-09-04</date>
</modifytrack>
</file>
<file>
<filename>file3.txt</filename>
<createdate>2009-09-01</createdate>
<modifytrack>
<date>2009-09-02</date>
<date>2009-09-03</date>
<date>2009-09-04</date>
<date>2009-09-05</date>
</modifytrack>
</file>
</files>
调用:
$xmlArray = getTreeArray($doc->getElementsByTagName("files")->item(0));
print_r($xmlArray);
将得到
Array ( [file] => Array ( [0] => Array ( [filename] => Array ( [0] => file1.txt ) [createdate] => Array ( [0] => 2009-09-07 ) [modifytrack] => Array ( [0] => Array ( [date] => Array ( [0] => 2009-09-08 ) ) ) ) [1] => Array ( [filename] => Array ( [0] => file2.txt ) [createdate] => Array ( [0] => 2009-09-01 ) [modifytrack] => Array ( [0] => Array ( [date] => Array ( [0] => 2009-09-04 ) ) ) ) [2] => Array ( [filename] => Array ( [0] => file3.txt ) [createdate] => Array ( [0] => 2009-09-01 ) [modifytrack] => Array ( [0] => Array ( [date] => Array ( [0] => 2009-09-02 [1] => 2009-09-03 [2] => 2009-09-04 [3] => 2009-09-05 ) ) ) ) ) )
此函数适用于任何深度结构
函数代码
function getTreeArray($targetNode){
$array = array();
$targetNodeChildren = $targetNode->childNodes;
foreach ($targetNodeChildren as $targetChildNode){
if ($targetChildNode->nodeName!='#text'){
if ($targetChildNode->childNodes->length>1){
$array[$targetChildNode->nodeName][] = getTreeArray($targetChildNode);
}
else{
$array[$targetChildNode->nodeName][] = $targetChildNode->nodeValue;
}
}
}
return $array;
}
分享到:
相关推荐
该函数将使用“Flatten To XML”和“Write to XML File”VI 创建的 XML 文件转换为结构数组,使用控件/变量的名称作为结构中的字段名称。 它支持读取簇、数组、布尔值、时间戳、枚举、整数、定点数、浮点数、字符串...
此函数将 MATLAB 结构体转换为 XML 文件。
2.6.5 ROMAN——将阿拉伯数字转为文本型罗马数字 113 2.6.6 ARABIC——将罗马数字转换为阿拉伯数字 114 2.6.7 BASE——将一个数转换为给定基数的文本格式 115 2.6.8 DECIMAL——将给定基数的文本转换为十进制数 ...
15.fn:escapeXml 把一些字符转成XML表示,例如 <字符应该转为${fn:escapeXml(param:info)} 16.fn:indexOf 子字符串在母字符串中出现的位置 ${fn:indexOf(name, "-")} 17.fn:join 将数组中的数据联合成一个新字符串...
• 将二维数组按列转换为一维数组 • 数组公式实现单条件求和 • 计算一周中内存采购的平均价格 • 统计各品牌的商品销量汇总 • 利用COUNT函数代替SUM 函数统计不重复记录 • 标识零件规格号中的非法数据 • 将中文...
17.6 用PySequence_Fast将Python序列转为 C数组 604 17.7 用迭代器逐个访问Python序列的元素 608 17.8 从Python可调用的C函数中返回None 611 17.9 用gdb调试动态载入的C扩展 613 17.10 调试内存问题 614 第18...
* 作用:将xml转为array */ public function xmlToArray($xml) { //将XML转为array $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); ...
细节35 将字符串转为字符数组 细节36 将字符数组写入到字符串 细节37 使用var创建隐型局部变量 细节38 Lambda表达式 细节39 生成缩略图的方法 细节40 使用缓冲流 …… 第6章 必知必会的28个ADO.NET、XML及LINQ方面的...
4.视频格式转为Flv 5.生成Flv视频的缩略图 6.转换文件并保存在指定文件夹下 7.转换文件并保存在指定文件夹下 8.运行mencoder的视频解码器转换 复制代码 21.随机数类 BaseRandom 1.产生随机字符 2.产生随机数 3.在...
实例098 将位图转为GIF图标 实例099 图片的平滑缩放 3.6 图像的剪切与合成 实例100 图像的剪切 实例101 图像的合成 3.7 图像识别 实例102 获取鼠标任意位置的颜色值 实例103 提取图片中的对象 实例104 手写...
实例098 将位图转为GIF图标 实例099 图片的平滑缩放 3.6 图像的剪切与合成 实例100 图像的剪切 实例101 图像的合成 3.7 图像识别 实例102 获取鼠标任意位置的颜色值 实例103 提取图片中的对象 实例104 手写...
4.视频格式转为Flv 5.生成Flv视频的缩略图 6.转换文件并保存在指定文件夹下 7.转换文件并保存在指定文件夹下 8.运行mencoder的视频解码器转换 复制代码 21.随机数类 BaseRandom 1.产生随机字符 2.产生随机数 3.在...
8. 得到一浮点数小数点后4位,如何写以函数截取为两位 9. 整型转字符? 10. 显示数据库的记录,点击哪个标题栏,就按照哪个标题排序 11. 制作两个按钮 12. 用什么sql语句将数据库中的一条记录,复制为两条? 13. 有兩個...
cc实例096 显示JPG图片 3.5 图形转换与缩放 cc实例097 将位图转换为 JPG cc实例098 将位图转为GIF图标 cc实例099 图片的平滑缩放 3.6 图像的剪切与合成 cc实例100 图像的剪切 cc实例101 图像的合成 ...
cc实例098 将位图转为GIF图标 cc实例099 图片的平滑缩放 3.6 图像的剪切与合成 cc实例100 图像的剪切 cc实例101 图像的合成 3.7 图像识别 cc实例102 获取鼠标任意位置的颜色值 ...
cc实例098 将位图转为GIF图标 cc实例099 图片的平滑缩放 3.6 图像的剪切与合成 cc实例100 图像的剪切 cc实例101 图像的合成 3.7 图像识别 cc实例102 获取鼠标任意位置的颜色值 ...
节点变量表示为树型结构中的一个节点,通常在XML处理中使用。 在模板里对sequences和hashes初始化 sequences 1. [“you”,”me”,”he”] 2. 1..100 3. [ {“Akey”:”Avalue”},{“Akey1”:”Avalue1”}, {“B...
得到一浮点数小数点后4位,如何写以函数截取为两位 9. 整型转字符? 10. 显示数据库的记录,点击哪个标题栏,就按照哪个标题排序 11. 制作两个按钮 12. 用什么sql语句将数据库中的一条记录,复制为两条?...
将原来的函数分割为:“写入键值Ex_数值”和“写入键值Ex_文本”。 3、修正“注册表操作Ex”不支持“#HKEY_CURRENT_USER”的BUG,感谢易友【pp25729391】反馈并帮助测试。 4、新增“注册表操作Ex->写QWORD_64值”...