如何用Presto(MySQL)提取HTML格式内的指定值?
提取
<admin>标签内数值的技术方案 以下是几种不同场景下的可行解决方案,覆盖常用编程语言和命令行工具:
1. Python 实现(标准库)
用Python内置的xml.etree.ElementTree模块解析XML结构,无需额外安装依赖:
import xml.etree.ElementTree as ET # 待解析的XML内容 xml_content = "<payment><no_code>88888</no_code><signature>fbf2c1e</signature><customer_no>4150</customer_no><amount>80</amount><admin>7</admin><total>87</total><transaction_code>0000894</transaction_code></payment>" # 解析并提取值 root = ET.fromstring(xml_content) admin_value = root.find('admin').text print(admin_value) # 输出:7
2. JavaScript 实现
浏览器环境
直接用原生DOMParser解析:
const xmlContent = "<payment><no_code>88888</no_code><signature>fbf2c1e</signature><customer_no>4150</customer_no><amount>80</amount><admin>7</admin><total>87</total><transaction_code>0000894</transaction_code></payment>"; const parser = new DOMParser(); const xmlDoc = parser.parseFromString(xmlContent, "text/xml"); const adminValue = xmlDoc.querySelector("admin").textContent; console.log(adminValue); // 输出:7
Node.js 环境
先安装xml2js依赖,再解析:
npm install xml2js
const xml2js = require('xml2js'); const xmlContent = "<payment><no_code>88888</no_code><signature>fbf2c1e</signature><customer_no>4150</customer_no><amount>80</amount><admin>7</admin><total>87</total><transaction_code>0000894</transaction_code></payment>"; xml2js.parseString(xmlContent, (err, result) => { if (err) throw err; const adminValue = result.payment.admin[0]; console.log(adminValue); // 输出:7 });
3. 命令行工具(Linux/macOS)
用xmllint结合XPath提取,无需编写代码:
echo "<payment><no_code>88888</no_code><signature>fbf2c1e</signature><customer_no>4150</customer_no><amount>80</amount><admin>7</admin><total>87</total><transaction_code>0000894</transaction_code></payment>" | xmllint --xpath "string(/payment/admin)" -
执行后直接输出7。
注意事项
- 不建议用正则表达式提取,因为XML/HTML结构可能出现换行、属性等变化,正则容错性差,容易解析出错。
- 确保输入内容是合法的XML结构,否则解析工具会抛出错误。
内容的提问来源于stack exchange,提问作者Stein
相关产品推荐
相关产品推荐

