Visual Basic如何读取数据存储于属性而非子节点的XML文件
XML自闭合标签属性读取方案
你当前处理的是属性直接存储在自闭合标签中的场景,无需读取子节点,直接调用XML解析库的属性读取API即可获取所有目标数据,以下是主流编程语言的实现示例:
Python 实现(使用内置标准库,无需额外安装依赖)
import xml.etree.ElementTree as ET # 解析本地XML文件 tree = ET.parse('替换为你的XML文件路径.xml') root = tree.getroot() # 存储所有属性数据的列表 period_list = [] # 遍历所有period标签 for period_node in root.findall('.//period'): # 提取目标属性存入字典 period_info = { "name": period_node.get("name"), "short": period_node.get("short"), "period": period_node.get("period"), "starttime": period_node.get("starttime"), "endtime": period_node.get("endtime") } period_list.append(period_info) # 输出结果验证 for item in period_list: print(item)
JavaScript 实现(兼容浏览器/Node.js环境)
// 浏览器环境示例,Node.js环境可引入xmldom库实现相同逻辑 const xmlContent = `替换为你的XML字符串内容` const parser = new DOMParser() const xmlDoc = parser.parseFromString(xmlContent, "text/xml") const periodNodes = xmlDoc.getElementsByTagName("period") const periodList = [] for (let i = 0; i < periodNodes.length; i++) { const node = periodNodes[i] periodList.push({ name: node.getAttribute("name"), short: node.getAttribute("short"), period: node.getAttribute("period"), starttime: node.getAttribute("starttime"), endtime: node.getAttribute("endtime") }) } console.log(periodList)
注意事项
- 若存在属性缺失的场景,可以在获取属性时添加默认值避免空值报错:Python写法为
period_node.get('name', '默认值'),JavaScript写法为node.getAttribute('name') ?? '默认值' - 若需要处理的XML文件体积超过100MB,建议采用SAX流式解析方案,避免一次性加载整个文件占用过多内存
内容的提问来源于stack exchange,提问作者Caravansary
相关产品推荐
相关产品推荐

