如何用Python输出漂亮的xml文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Python输出漂亮的xml文件相关的知识,希望对你有一定的参考价值。

最近要用Python处理一个xml文件。平时习惯了用xml.etree.ElementTree,结果发现此库存在一些让人无法忍受的缺点:
1. 无法处理comment和cdata
2. 输出后的xml文件没有换行,没有缩进,十分难以阅读

于是尝试这用xml.dom.minidom,前两个问题几乎全部解决了。唯一让人看着不爽的是minidom对于text的处理。比如,我期待的xml输入如下:

[html] view plain copy
<pre name="code" class="html"><pre name="code" class="html"><root>
<host>192.168.0.1</host>
</root>

但是使用xml.dom.minidom.Document.writexml后,输出的结果却是这样的:

[html] view plain copy
<root>
<host>
192.168.0.1
</host>
</root>

开始的时候,我考虑重写Document.writexml函数,觉得太麻烦,有用牛刀杀鸡之感。后来想想,其实自己的需求非常简单,只是需要对Document的输出结果做个二次处理即可。使用python的正则表达式库就可以实现:

[python] view plain copy
def save_xml(self, file_name):
xml_str = self.m_dom.toprettyxml(indent=" ")
repl = lambda x: ">%s</" % x.group(1).strip() if len(x.group(1).strip()) != 0 else x.group(0)
pretty_str = re.sub(r'>\n\s*([^<]+)</', repl, xml_str)
open(file_name, 'w').write(pretty_str)

先将Document输出到字符串,然后使用正则表达式将text中的空行去掉即可。
黑马程序员的PYthon是国内最早开设的真正人工智能课程。课程全面系统,紧跟时代潮流。
参考技术A 你的问题可以直接转化为python如何读取文件,使用这句代码:open('thefile.xml').read( ) 下面是例子: >>> open('D:\\Test.xml',encoding='utf8').read()不知道为什么,python3.4中读取文件的默认使用GBK,这一点要注意本回答被提问者采纳

再见HTML !如何用Python写一个漂亮的网页?

点击蓝色“Python交流圈”关注我丫

加个“星标”,每天一起进步一点点

我们在写一个网站或者一个网页界面的时候,需要学习很多东西,对小白来说很困难!比如我要做一个简单的网页交互:
  • 要懂后端,比如Python里面的Django或者Flask,或者是Java里面的SpringBoot
  • 要懂前端,现在都叫大前端了(因为很复杂),比如前端的框架Vue/React, 然后页面的美化框架Bootstrap ,还有html ,csss 和Javascript 三驾马车.
天啊,听听头都大呢!其实我就给老板做一个简单的交互的页面,而且我只会Python ,有没有很简单的办法可以做到呢。

今天小编在Github上逛的时候,找到一个非常酷的神器,名字叫remi ,目前收获了2300个赞。

再见HTML !如何用Python写一个漂亮的网页?


star并不是很多,但是这个库可是选入2018年的十大明星库,号称是一个独立的GUI库,而且最牛逼的就是这个库竟然小于 100K,是否很神奇呢,我们一起来体验看一下特性:
  • 跟其他GUI库区别? Kivy,PyQT和PyGObject都需要主机操作系统的本机代码,这意味着安装或编译大型依赖项。Remi只需要一个Web浏览器即可显示您的GUI。

  • 我需要懂HTML吗? 不,只需要使用Python进行编码。

  • 它是开源的吗? 当然!Remi是根据Apache许可发布的。开源,免费!

  • 我需要某种网络服务器吗? 不,自带网络服务器。


 1 

安装


如何安装呢,因为是Python 库,直接用pip 即可

pip install remi

如果是没有网络的,或者服务器跟外网不通的,可以离线安装。下载这个包,然后用install 安装

python setup.py install



 2 

快速体验


我们来快速看一下,这个简单的Hello world网页。

再见HTML !如何用Python写一个漂亮的网页?

这里面包含了一个 2个元素:

  • 文本Hello world ;

  • 一个Press me的按钮;


点击这个按钮还会改变Hello world的文本内容,看点一下就变成了Button pressed.

再见HTML !如何用Python写一个漂亮的网页?

上面这个简单的效果,其实只用了20来行Python代码,都是原生的Python代码,没有用一行HTML .


我们来看一下源码:

再见HTML !如何用Python写一个漂亮的网页?

整个的代码的结构层次还很清晰的:
  • 首先声明一个MyApp类,这个类会继承母框架App里面的功能,可以认为是一个网页画布;
  • 然后在这个画布里面有3个函数:
    init主要是做类的初始化工作;
    main主要对这个画布布局进行设计,包含一个文本和一个按钮。
    on_button_pressed主要是控件的相应,点击触发函数
  • 最后是start来启动这个类,就会生成一个本地的网站链接


再见HTML !如何用Python写一个漂亮的网页?



 3 

更多复杂的网页元素



看完上面的设计是不是就觉得跟Python里面大名鼎鼎的tk库很相似啊,上面的只是开胃菜,这个remi还能提供更复杂的gui界面元素。


再见HTML !如何用Python写一个漂亮的网页?


上面的是一个完整的demo页面,基本上常见的控件元素的都包含了,比如有菜单栏,文本,按钮,单选框,进度栏,下拉框,表格,弹出框,按钮选取文件路径,文件树形结构,日期等几十种控件。



再见HTML !如何用Python写一个漂亮的网页?


有了这个神器,是不是可以告别Python里面的tk库,也可以省去学习HTML的时间,还等啥,赶紧下载尝鲜一下吧。


链接:

https://github.com/dddomodossola/remi



本文转载来自 程序员GitHub, 转载请联系小编



  
    
    
  
近期热门推荐

以上是关于如何用Python输出漂亮的xml文件的主要内容,如果未能解决你的问题,请参考以下文章

如何用python读取xml文件

XML日志文件打印到漂亮[重复]

如何让 Python 的 ElementTree 漂亮地打印到 XML 文件?

如何用 web.xml 映射 Html 文件?

如何用qq邮件发送xml文件

在C++中如何用schema校验xml文件