最近做一个CRM的接口,需要接受CRM发出的XML数据,再在PHP端做处理,现在把php解析xml的代码贴出:
empty($_GET['data']) ? $data = $_POST['data'] : $_GET['data'];
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
$params = array();
$level = array();
foreach($vals as $xml_elem) {
if ($xml_elem['type'] == 'open') {
if (array_key_exists('attributes', $xml_elem)) {
list($level[$xml_elem['level']], $extra) = array_values($xml_elem['attributes']);
} else {
$level[$xml_elem['level']] = $xml_elem['tag'];
}
}
if ($xml_elem['type'] == 'complete') {
$start_level = 1;
$php_stmt = '$params';
while ($start_level < $xml_elem['level']) {
$php_stmt. = '[$level['.$start_level.']]';
$start_level++;
}
$php_stmt. = '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
eval($php_stmt);
}
}
echo "<pre>";
print_r($params);
echo "</pre>";
首先从request中获取传递过来的$_GET数据,然后调用php的xml解析函数,解析成字串,最后调用eval函数将字串转换成真正的PHP对象,结果是输出一个数组!
分享到:
相关推荐
这里,`simplexml_load_string`函数将XML字符串转换为一个SimpleXMLElement对象,然后通过将其转换为JSON字符串,再反序列化回PHP数组,从而实现转换。 在我们的压缩包文件中,有一个名为`xml.class.php`的文件,...
首先,当需要将XML字符串转换成PHP对象进行处理时,可以使用`simplexml_load_string()`函数。此函数接受一个XML格式的字符串作为输入,并将之转换为一个SimpleXMLElement对象。通过这种转换,我们可以非常方便地访问...
为了进一步确认,函数尝试将字符串转换为SimpleXMLElement对象(通过`simplexml_load_string()`),然后将其序列化为JSON,再反序列化回PHP数组(通过`json_decode(json_encode(...), true)`)。如果这个过程没有...
- SimpleXML是PHP的一个内置扩展,提供了一种简单的方式从XML字符串或文件创建对象。 - SimpleXML对象可以像数组一样进行索引,也可以像对象一样访问属性。 #### 实现步骤 1. **定义函数** `xmlToArray` - 这个...
- **数组转XML**:SimpleXML提供了一个方便的方法`asXML()`,将SimpleXMLElement对象转换为XML字符串。DOM则可以通过`DOMDocument::saveXML()`或`DOMDocument::save()`保存到字符串或文件。 4. **类设计与实现** ...
这段代码首先创建了一个XML字符串,然后使用`simplexml_load_string`将其转换为SimpleXMLElement对象,接着使用`json_encode`将其转化为JSON字符串。执行后,将输出相应的JSON表示: ```json {"@attributes":{},...
2. **PHP到XML的转换**:另一个关键功能可能是`array_to_xml()`, 这个方法将PHP数组转换成XML字符串。它可能首先创建一个DOMDocument对象,然后递归地将数组元素添加为DOMElement节点,最后输出XML字符串。这样,PHP...
上述代码首先使用`simplexml_load_file()`函数加载XML文件并将其转换为SimpleXMLElement对象,然后通过两次`json_encode()`操作将其转换为PHP数组,最后再次编码为JSON字符串。 其次,XML转数组通常是为了方便在PHP...
` 将XML字符串输出到浏览器。 要生成更复杂的XML字符串,可以使用PHP的DOMDocument和DOMElement类,它们提供了更方便的方式来创建和操作XML文档。例如,可以创建一个DOMDocument对象,然后添加DOMElement来构建XML...
最后,将整个 XML 结构添加到 DOMDocument 对象,并保存为文件: ```php $dom->appendChild($booksElement); $dom->save('book1.xml'); ``` 这种方法的优点是灵活且易于理解,可以处理复杂的数据结构。但缺点是,...
这个例子展示了如何使用SimpleXMLElement将XML字符串转换为PHP对象,然后遍历并打印出书籍的信息。每个`<book>`元素都被视为一个对象,我们可以直接访问其属性(如'title')和子元素(如'author'和'year')。 此外...
这段代码将XML字符串转换为HTML安全的格式,并在页面中显示。 4. 配置XML页面表格 要将XML数据转换为HTML表格,可以使用PHP的DOMXPath类来查询XML节点,然后创建相应的HTML表格结构。以下是一个简化的示例: ```...
在PHP开发中,将文本数据转换为XML格式是一项常见的任务,尤其当处理日志文件时。日志文件通常以文本格式存储,包含了丰富的系统、应用或用户活动信息。本示例将详细介绍如何读取TXT日志文件并将其内容转换为XML,...
在这个例子中,首先使用`simplexml_load_string()`将XML字符串转化为一个SimpleXMLElement对象,然后通过`json_encode()`将其转换为PHP数组,因为JSON编码通常适用于处理数组。再将得到的数组用`json_encode()`转化...
通常,你需要将修改后的SimpleXMLElement对象转换回XML字符串,然后写回到文件。例如,使用`asXML()`方法: ```php $xmlString = $xml->asXML(); file_put_contents('Messages.xml', $xmlString); ``` 9. **...
SimpleXML是一个易于使用的接口,可将XML字符串或文件加载为PHP对象。以下是一个简单的例子: ```php $xmlString = <<<XML <item id="1">Item 1 <subitem>Subitem 1 <subitem>Subitem 2 XML; $xml = ...
PHP提供了`xml_encode`和`xml_decode`函数,可以将PHP数据结构转换为XML字符串,反之亦然。这对于在PHP和其它系统之间交换数据非常有用。 7. **SOAP和XML-RPC**: SOAP(Simple Object Access Protocol)和XML-...
此外,它还支持一些便利的方法,如`count()`来获取子元素的数量,以及`asXML()`来将对象转换回XML字符串。 对于复杂的数据结构,SimpleXMLElement可能不是最高效的选择,但对于简单的XML文档,它提供了一种直观且...
当XML文档构建完成后,使用`saveXML`方法可以将DOM对象转换回XML字符串,或者使用`save`方法将XML写入文件: ```php $xmlString = $xml->saveXML(); $xml->save('output.xml'); ``` 在实际应用中,我们还可能需要...