$xml =" <root><person><name>John</name><age>30</age></person><person><name>Jane</name><age>25</age></person></root> ";转为数组
时间: 2023-10-30 21:05:02 浏览: 55
可以使用 SimpleXMLElement 类来将 XML 转换为数组:
```php
$xml = "<root><person><name>John</name><age>30</age></person><person><name>Jane</name><age>25</age></person></root>";
// 将 XML 转换为 SimpleXMLElement 对象
$sxml = new SimpleXMLElement($xml);
// 将 SimpleXMLElement 对象转换为数组
$array = json_decode(json_encode($sxml), true);
print_r($array);
```
输出结果:
```
Array
(
[person] => Array
(
[0] => Array
(
[name] => John
[age] => 30
)
[1] => Array
(
[name] => Jane
[age] => 25
)
)
)
```
相关问题
接口返回xml格式的数据
好的,您可以使用以下代码将一个XML字符串转换为JSON格式的数据:
```python
import json
import xmltodict
xml_string = '<root><person><name>John</name><age>30</age></person><person><name>Jane</name><age>25</age></person></root>'
json_data = json.dumps(xmltodict.parse(xml_string))
print(json_data)
```
输出结果为:
```
{"root": {"person": [{"name": "John", "age": "30"}, {"name": "Jane", "age": "25"}]}}
```
您也可以使用Python的内置`xml`模块来解析XML数据,如下所示:
```python
import xml.etree.ElementTree as ET
xml_string = '<root><person><name>John</name><age>30</age></person><person><name>Jane</name><age>25</age></person></root>'
root = ET.fromstring(xml_string)
data = {"root": {}}
for person in root.findall("person"):
name = person.find("name").text
age = person.find("age").text
data["root"][name] = age
json_data = json.dumps(data)
print(json_data)
```
输出结果为:
```
{"root": {"John": "30", "Jane": "25"}}
```
举例说明将xml文档中的根节点的所有子节点倒序
假设我们有以下的XML文档:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<person>
<name>John</name>
<age>25</age>
</person>
<person>
<name>Jane</name>
<age>30</age>
</person>
<person>
<name>Bob</name>
<age>40</age>
</person>
</root>
```
我们可以使用XSLT转换语言来实现将根节点的所有子节点倒序。具体的XSLT代码如下:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:copy>
<xsl:apply-templates select="root/*">
<xsl:sort select="position()" data-type="number" order="descending"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
```
通过以上的XSLT代码,我们可以将根节点的所有子节点倒序,并得到以下的结果:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<person>
<name>Bob</name>
<age>40</age>
</person>
<person>
<name>Jane</name>
<age>30</age>
</person>
<person>
<name>John</name>
<age>25</age>
</person>
</root>
```