XML 文件是用于数据存储和传输的格式,通常用于网页、配置文件、数据交换等。将 XML 文件转换为其他格式(如 JSON、CSV、HTML、文本等)或在不同系统之间转换,是常见的需求。
✅ 一、XML 文件怎么转换?
1. 转换为文本(纯文本)
如果你只是想把 XML 文件的内容转为纯文本,可以使用命令行工具如 xmllint、xmlstarlet 或 Python 的 xml.etree.ElementTree。
示例(Python):
import xml.etree.ElementTree as ET
# 读取 XML 文件
tree = ET.parse('example.xml')
root = tree.getroot()
# 将 XML 转换为字符串
xml_str = ET.tostring(root, encoding='utf-8', method='xml').decode('utf-8')
print(xml_str)
2. 转换为 JSON
如果你需要将 XML 数据转换为 JSON 格式,可以使用 xmltodict 或 lxml。
示例(Python):
import xmltodict
# 读取 XML 文件
with open('example.xml', 'r') as f:
xml_data = f.read()
# 转换为字典
data = xmltodict.parse(xml_data)
# 转换为 JSON
import json
json_str = json.dumps(data, indent=2)
print(json_str)
3. 转换为 CSV
如果你需要将 XML 数据转换为 CSV 格式,可以使用 xmltodict + pandas。
示例(Python):
import xmltodict
import pandas as pd
# 读取 XML
xml_data = open('example.xml', 'r').read()
data = xmltodict.parse(xml_data)
# 转换为 DataFrame
df = pd.DataFrame(data).T
# 导出为 CSV
df.to_csv('output.csv', index=False)
4. 转换为 HTML
如果你需要将 XML 转换为 HTML,可以用 xmltodict 或 lxml。
示例(Python):
from lxml import html
import xmltodict
# 读取 XML
xml_data = open('example.xml', 'r').read()
data = xmltodict.parse(xml_data)
# 转换为 HTML
html_str = html.fromstring(xml_data)
html_str.write('output.html')
5. 使用命令行工具
如果你使用的是 Linux/macOS,可以使用以下命令:
1. xmllint(Linux/macOS)
xmllint --format example.xml
2. xmlstarlet(Linux/macOS)
xmlstarlet fmt example.xml
3. xml2json(Linux/macOS)
xml2json example.xml
✅ 二、XML 文件转换总结
| 转换目标 | 工具/方法 |
|---|---|
| 文本 | Python, xmllint, xmlstarlet |
| JSON | Python (xmltodict), JSON |
| CSV | Python (xmltodict + pandas) |
| HTML | Python (xmltodict + lxml) |
| 其他 | xml2json, xmllint 等 |
✅ 三、推荐工具
| 工具 | 用途 |
|---|---|
xmltodict |
XML -> JSON |
lxml |
XML 解析和转换 |
pandas |
XML -> CSV |
xmllint |
XML 格式化 |
xmlstarlet |
XML 处理 |
✅ 四、示例(XML 转 JSON)
<root>
<item id="1">Apple</item>
<item id="2">Banana</item>
</root>
import xmltodict
data = xmltodict.parse('example.xml')
json_data = json.dumps(data, indent=2)
print(json_data)
输出:
{
"root": {
"item": [
{"id": "1", "text": "Apple"},
{"id": "2", "text": "Banana"}
]
}
}
✅ 五、总结
| 转换目标 | 方法 |
|---|---|
| 文本 | xml.etree.ElementTree 或 xmllint |
| JSON | xmltodict + json |
| CSV | xmltodict + pandas |
| HTML | xmltodict + lxml |
| 其他 | xml2json, xmllint 等 |
如果你有具体的 XML 文件,我可以帮你写一个转换脚本或提供更详细的说明!