`
nakupanda
  • 浏览: 416248 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

将XML转为数组结构的函数

    博客分类:
  • php
阅读更多
此方法要求传入一个节点(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;
}
分享到:
评论

相关推荐

    xml转为数组格式

    1. XML到数组的转换主要涉及到解析XML文档,然后将其结构映射到相应的数组结构中。这个过程通常分为两个步骤:解析XML和构建数组。 - 解析XML:使用解析器(如JavaScript的DOMParser,PHP的SimpleXMLElement,...

    PHP二维数组形成XML内容形式

    它展示了如何加载数据到二维数组,然后调用`array_to_xml`函数将数据转换为XML,最后输出生成的XML内容。这个例子是学习如何在PHP中操作数组和XML数据的一个很好的起点,对于任何需要在PHP项目中进行数据交换的工作...

    php实现将数组转换为XML的方法

    在PHP编程中,将数组转换为XML格式是一项非常实用的技能,尤其是在需要将结构化数据进行网络传输或者进行数据交换时。本文介绍了使用PHP语言将数组转换为XML的方法,并通过实例分析了PHP操作数组和XML格式文件的技巧...

    js读取xml文件,生成树型结构

    例如,使用递归函数将树形结构转换为HTML ul-li结构: ```javascript function displayTree(tree, parentElement) { var li = document.createElement('li'); li.textContent = tree.name; for (var attr in ...

    parseLabviewXML:此函数将使用 LabVIEW:trade_mark: 软件创建的 XML 文件转换为 MATLAB:registered: 结构体数组。-matlab开发

    该函数将使用“Flatten To XML”和“Write to XML File”VI 创建的 XML 文件转换为结构数组,使用控件/变量的名称作为结构中的字段名称。 它支持读取簇、数组、布尔值、时间戳、枚举、整数、定点数、浮点数、字符串...

    将txt转成voc数据集标准xml(matlab的)

    5. **创建XML文件**:利用`xmlwrite`函数,将构建好的结构数组转换为XML文件。记得指定根元素为`&lt;annotation&gt;`,并填充其他必要的信息,如`&lt;filename&gt;`(对应txt文件中的图像名称),`&lt;size&gt;`(通常包括图像的宽度和...

    PHP如何将XML转成数组

    - 递归实现PHP数组转XML的代码分享:展示如何使用递归函数将复杂数组结构转换为XML。 - PHP处理数组和XML之间的互相转换:一篇教程,详细讲解了从XML到数组以及从数组到XML的完整转换过程。 - PHP实现将数组转换为...

    php微信接口xml数据交互.zip

    本文将详细讲解如何使用PHP实现微信接口中的XML数据转换,包括数组转微信XML、发送XML到微信接口以及将返回的XML转为数组。 1. 数组转微信XML 在微信接口开发中,我们常常需要将PHP数组转换为符合微信接口规范的...

    struct2xml:将 MATLAB 结构体转换为 XML 文件。-matlab开发

    `struct2xml` 是一个 MATLAB 函数,专门用于将 MATLAB 的结构体数据转换为 XML 文件,以便于数据存储、交换或与非 MATLAB 环境中的应用集成。 XML 是一种标记语言,它允许我们以自描述的方式组织数据,具有良好的...

    ajax获得json对象数组 循环输出数据的方法

    在给定的例子中,我们有一个JSON对象数组,其结构如下: ```javascript var obj = [ {id: 1, pId: 0, name: "采购商品", open: true}, {id: 2, pId: 1, name: "雨伞2", open: true}, {id: 3, pId: 1, name: ...

    SQL SERVER 将XML变量转为JSON文本

    本文将详细介绍如何使用SQL Server内置函数将XML变量转换为JSON文本。 首先,我们需要创建一个用户定义的函数(UDF)来执行这个转换。在提供的示例中,创建了一个名为`[dbo].[fnXmlToJson]`的函数,它接受一个XML...

    第四章 PHP创建与解析XML

    // 自定义函数将数组转为XML echo $sxml-&gt;asXML(); ``` **4. 使用XPath查询** XPath是一种在XML文档中查找信息的语言。在DOM中,我们可以使用DOMXPath类来执行XPath查询。例如: ```php $doc = new DOMDocument...

    matlab开发-matml

    5. **逆转换**:虽然MATLAB提供的是单向的`matml`函数,但通过编写自定义脚本,也可以实现XML文件回转为MATLAB变量,这通常需要解析XML结构并重新构建相应的MATLAB数据。 6. **许可证**:`license.txt`文件通常包含...

    前台js将table转为Excel表格下载

    2. 将数据转化为二维数组,模拟Excel的行列结构。 3. 创建一个Blob对象,内容是符合Excel格式的数据字符串,如CSV(逗号分隔值)或二进制XML(如SpreadsheetML)。 4. 创建一个隐藏的`a`标签,设置其`href`为Blob...

    delphi数据集和json互转

    2. 提取数据并填充数据集:遍历TJSONObject中的`Data`数组,将每个JSON对象转换为数据集的一行,并将其插入数据集。 ```delphi MyDataset.DisableControls; try RowArray := JSONObj.GetValue('Data'); ...

    EL表达式里fn函数的用法

    例如,`${fn:join(array, ', ')} `将数组`array`的元素用逗号和空格连接起来。 7. **fn:length** - 返回字符串的长度或数组的大小。如,`${fn:length(shoppingCart.products)} `给出购物车中产品数量。 8. **fn:...

    【matlab】matlab,深度图转换三维点云,depthmap to cloud

    在MATLAB中,我们可以使用`plywrite`函数将点云数据写入PLY文件。除了点坐标,PLY文件还可以包含颜色、法线等其他信息。 6. **代码实现**:在提供的`DepthtoCloud`文件中,应该包含了上述步骤的MATLAB代码。通常,...

    php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析

    `htmlspecialchars_decode()` 函数将上述预定义的HTML实体转换回原始字符。 在处理用户输入、存储和显示数据时,合理使用这两个函数能够确保数据安全并避免因字符转义问题引发的页面显示异常。同时,了解并使用合适...

Global site tag (gtag.js) - Google Analytics