🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    使用vscode给microPython上添加第三方库,并测试m5stack上用elementTree库解析xml文件

    Scheduled Pinned Locked Moved PROJECTS
    1 Posts 1 Posters 2.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K Offline
      kyo413
      last edited by

      microPython并没有官方的xml解析工具,我在pfalcon/pycopy-lib: Standard library of the Pycopy project, minimalist and light-weight Python language implementation (github.com)里找到了精简的elementTree库(可以解析xml文件或者字符串的节点文本,属性等,但是对比完整的ET库并不能生成xml),下载地址pycopy-lib/xml.etree.ElementTree at master · pfalcon/pycopy-lib (github.com);pycopy-lib/xmltok2 at master · pfalcon/pycopy-lib (github.com)

      需要下载两个文件 xmltok2.py,ElementTree.py,

      在vscode的扩展里搜索 vscode-m5stack-mpy,安装后就可以简单的添加文件,也可以在vscode里直接让m5s直接执行python文件

      点击下边的 Add M5Stack添加设备,加号新建文件,上箭头上传文件到m5s上,把下载下来的两个py文件上传到设备。 执行

      import ElementTree as ET

      dir(ET)

      如果能显示ET库的方法,证明导入库成功

      关于ET库的使用方法 (11条消息) Python xml.etree.ElementTree解析XML文件_凯耐的博客-CSDN博客_xml.etree.elementtree

      这是我个人写的一个例子

      复制代码
      from m5stack import *
      from m5ui import *
      from uiflow import *
      import time

      setScreenColor(0x222222)

      xmlString = None
      rootTag = None
      rootText = None
      root01tag = None
      root01text = None
      root01attrib = None

      label0 = M5TextBox(23, 33, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
      title0 = M5Title(title="Title", x=3, fgcolor=0xFFFFFF, bgcolor=0x0000FF)
      label1 = M5TextBox(23, 61, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
      label2 = M5TextBox(22, 87, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
      label3 = M5TextBox(22, 116, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)
      label4 = M5TextBox(25, 151, "Text", lcd.FONT_Default, 0xFFFFFF, rotate=0)

      lcd.clear()
      import ElementTree as ET
      xmlString = '<?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank>1</rank> <year>2008</year> <gdppc>141100</gdppc> <neighbor name="Austria" direction="E"/> <neighbor name="Switzerland" direction="W"/> </country> <country name="Singapore"> <rank>4</rank> <year>2011</year> <gdppc>59900</gdppc> <neighbor name="Malaysia" direction="N"/> </country> <country name="Panama"> <rank>68</rank> <year>2011</year> <gdppc>13600</gdppc> <neighbor name="Costa Rica" direction="W"/> <neighbor name="Colombia" direction="E"/> </country> </data>'
      lcd.clear()
      lcd.print(xmlString, 0, 0, 0xffffff)
      wait(2)
      lcd.clear()
      title0.setBgColor(0x000099)
      title0.setTitle('parsing...')
      root = ET.fromstring(xmlString)
      title0.setTitle('parsing complete')
      rootTag = 0
      rootTag = root.tag
      label0.setText(str((str('root.tag:') + str(rootTag))))
      rootText = 0
      rootText = root.text
      label1.setText(str((str('root.text:') + str(rootText))))
      root01tag = 0
      root01tag = root[0][1].tag
      label2.setText(str((str('root[0][1].tag:') + str(root01tag))))
      root01text = 0
      root01Text = root[0][1].text
      label3.setText(str((str('root[0][1].text:') + str(root01text))))
      root01attrib = 0
      root01attrib = root[0][1].attrib
      label4.setText(str((str('root[0][1].attrib:') + str(root01attrib))))
      复制代码
      实际运行效果 ,可以看出纯py在micropyhhon上运行还是比较慢的

      4.69 FhB:/ m5stack添加第三方ET库来解析xml https://v.douyin.com/RRVMGCV/ 覆zhi此链接,打开Douyin搜索,直接观看视频!

      1 Reply Last reply Reply Quote 0

      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

      With your input, this post could be even better 💗

      Register Login
      • First post
        Last post