V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiaolinjia
V2EX  ›  Python

请问下生成 xml 的问题。

  •  
  •   xiaolinjia · 2019-09-05 18:40:08 +08:00 · 2026 次点击
    这是一个创建于 1935 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前也没用过 py 来生成 xml。一般都是 lxml 解析。

    然后今天代码用内置的 xml 模块写好了,生成的时候才发现个坑,塔喵的 xml 模块生成的 xml 文件硬是有个 <?xml version="1.0" ?>头。 再看了下 xml 模块的源码。。

        def writexml(self, writer, indent="", addindent="", newl="",
                     encoding = None):
            if encoding is None:
                writer.write('<?xml version="1.0" ?>'+newl)
            else:
                writer.write('<?xml version="1.0" encoding="%s"?>%s' % (encoding, newl))
            for node in self.childNodes:
                node.writexml(writer, indent, addindent, newl)
    

    之后查了下 lxml 生成的没头,这个 xml 生成的一定有头。但是又有点懒得用 lxml 再重写一次了(因为结点有点多)。所以有什么办法可以去掉这个<?xml version="1.0" ?>头不?

    比如说 lxml 有什么美化 xml 输出的方法之类的不,因为这玩意不仅多了头,连下面的行都有自带多个 tab,单纯用文件形式打开,再 replace 掉开头一行感觉也不太对。

    3 条回复    2019-09-05 21:18:21 +08:00
    izoabr
        1
    izoabr  
       2019-09-05 18:44:59 +08:00
    你写完再去 replace 一下不就得了,或者干脆把这个库复制一份改个名,把这几行注释掉再当自有库用。
    MonoLogueChi
        2
    MonoLogueChi  
       2019-09-05 18:50:56 +08:00 via Android
    xml 又不是给人看的,只要能正常解析,管他里面有啥呢😏

    Python 我不太懂,你看一下这个函数输出的是什么,要是 string 类型的话就替换再保存应该就可以了吧。直接是 stream 类型的话,那就读出来替换再保存。思路应该是这样的吧
    guiqiqi
        3
    guiqiqi  
       2019-09-05 21:18:21 +08:00 via iPhone
    用 xml.tree.cElementTree.tostring 函数,将 encoding 参数传入 False 即可解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5159 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:41 · PVG 13:41 · LAX 21:41 · JFK 00:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.