利用diagrams渲染mermaid为xml文件

一、背景

        利用chatllama的方法进行数据增广,接入chatgpt 4o得到大量创建图表的mermaid代码。投喂大模型第一步就是将mermaid代码渲染成xml,为后续再将xml渲染成jpg提供铺垫。

mermaid介绍

        Mermaid 是一种基于 JavaScript 的开源图表生成工具,使用一种简单的 Markdown 风格的语法,创建各种类型的图表和图形,包括流程图、序列图、甘特图、类图等。

得到的JSON文档中包含mermaid代码和markdown代码

二、方法

        在 draw.io 网站上自动插入并导出 Mermaid 图表,从json中关键字“id”中的内容作为文件名保存xml文件。

代码功能概述

  1. validate_mermaid_code:清洗并验证 Mermaid 代码。
def validate_mermaid_code(text):
    # 清洗并验证Mermaid代码
    if text.startswith('```mermaid') and text.endswith('```'):
        text = text[11:-3].strip()
    return text
  1. click_menu_option:模拟点击 draw.io 菜单选项。
def click_menu_option(page, menu_text, option_text):
    for ele in page.ele('tag:div@class=geMenubar').eles('tag:a@class=geItem'):
        if ele.text == menu_text:
            ele.click()
            break

    for ele in page.eles('tag:td@class=mxPopupMenuItem'):
        if ele.text == option_text:
            ele.click()
            break
  1. drawio:将 Mermaid 代码插入到 draw.io 中,并导出为 XML 文件。
def drawio(page, text, file_name, error_dir):
    try:
        click_menu_option(page, '调整图形', '插入')
        click_menu_option(page, '插入', '高级')
        click_menu_option(page, '高级', 'Mermaid...')
        textarea = page.ele(
            'tag:textarea@style=box-sizing: border-box; resize: none; width: 100%; height: 354px; margin-bottom: 16px;')            #找到重置tag的属性
        textarea.clear()
        textarea.input(text)          

        for ele in page.eles('tag:button@class=geBtn gePrimaryBtn'):
            if ele.text == '插入':
                ele.click()

        if page.ele('tag:div@title=出错'):
            error_message = page.ele('tag:div@title=出错').text
            print(f"Error detected: {error_message}&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gatinaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值