Xml Reader

🏗️ 建筑工程XML数据一键转DataFrame

专门解析建筑工程领域XML数据(P6进度、IFC-XML、COBie、BSDD),批量转换为pandas DataFrame,支持层级数据扁平化与命名空间处理。

收藏
5.4k
安装
1.6k
版本
1.0.0
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心功能

ConstructionXMLReader 是建筑工程领域的通用XML解析基类,提供文件/字符串解析、命名空间自动提取、元素查找、字典转换及DataFrame导出等完整链路。针对行业常见格式封装了四个专用Reader:

  • P6XMLReader:解析Primavera P6导出的进度计划XML,提取活动(Activity)、资源(Resource)、WBS结构并返回结构化字典
  • IFCXMLReader:处理buildingSMART的IFC-XML格式,支持实体统计与全量提取
  • COBieXMLReader:覆盖COBie标准全部15张数据表(Facility/Component/Attribute等)的批量解析
  • BSDDXMLReader:读取buildingSMART数据字典导出的分类与属性定义

显著优点

1. 零依赖轻量化:仅依赖Python标准库xml.etree.ElementTree与pandas,无需lxml等重型库
2. 命名空间自适应:自动提取并处理带命名空间的标签(如{http://...}Activity),避免手动拼接URI

3. 智能扁平化elements_to_dataframe自动处理同层级子元素,将属性与文本内容转为列,支持多层嵌套展平

4. 多源兼容:同时支持文件路径与XML字符串输入,便于对接API响应或内存数据

5. 扩展性强:基类设计清晰,新增格式只需继承并定义特定标签提取逻辑

潜在局限

  • 性能瓶颈:标准库ElementTree在大文件(>100MB IFC-XML)时解析速度明显慢于lxml或SAX事件驱动方案
  • 内存占用flatten_xml默认全量加载,超大型COBie文件可能触发OOM
  • Schema验证缺失:仅做"良构"解析,不校验DTD/XSD,错误数据可能静默通过
  • 编码处理保守:依赖ET自动编码检测,特殊编码(如BOM标记的UTF-32)可能异常

适用人群

  • 建筑数据工程师:需要将P6/IFC/COBie数据导入BI工具或机器学习流程
  • BIM开发团队:快速原型验证与数据探查阶段
  • 设施管理顾问:COBie交付物验收与合规检查

常规风险

| 风险类别 | 说明 |
|---------|------|
| XXE注入 | 标准库`ElementTree`默认不解析外部实体,相对安全,但建议显式禁用`resolve_entities=False` |
| 路径遍历 | `parse_file`直接拼接路径,需确保上游已验证`file_path`合法性 |
| 敏感数据泄露 | COBie常含建筑空间敏感信息,DataFrame导出后需脱敏处理 |

代码质量评估

  • 类型提示完整,使用@dataclass封装解析结果
  • 方法职责单一,但_extract_namespaces实现较简陋,可能遗漏非根元素声明的命名空间
  • 缺少异常处理:文件不存在、XML格式错误等场景会抛出未封装异常

Xml Reader 内容

手动下载zip · 2.7 kB
SKILL.mdtext/markdown
请选择文件