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
Livid
V2EX  ›  Python

XML to Objects?

  •  
  •   Livid · 2012-04-19 16:32:22 +08:00 · 3906 次点击
    这是一个创建于 4600 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Python 中是否有这样的 XML 解析库,可以将这样的 XML 变成一组对象?

    <members>
    <member><name>a</name></member>
    <member><name>b</name></member>
    </members>

    然后用类似这样的语法就可以读取?

    members.member[0].name
    16 条回复    1970-01-01 08:00:00 +08:00
    eas
        1
    eas  
       2012-04-19 16:33:39 +08:00
    E4X 语法
    bhuztez
        2
    bhuztez  
       2012-04-19 16:35:29 +08:00
    xalinx
        3
    xalinx  
       2012-04-19 16:38:32 +08:00
    运行期是不能这么干的吧? 楼主的意思是根据xml生成一个python代码?
    xalinx
        4
    xalinx  
       2012-04-19 16:42:54 +08:00
    @bhuztez 学习了, 回头用用SimpleXMLParse
    binux
        5
    binux  
       2012-04-19 16:49:14 +08:00
    lizheming
        6
    lizheming  
       2012-04-19 17:09:19 +08:00
    PHP用simplexml的话解析出来的就是Object,可是我每次都想要Array的,所以我还要做一次Object->Array...
    Livid
        7
    Livid  
    MOD
    OP
       2012-04-19 17:11:47 +08:00
    经过试验,这个的结果最接近我想要的,尤其是,对于空元素取值返回的是 u'' 而不是 None:

    http://pypi.python.org/pypi/simplexml/0.6.1
    ssword
        8
    ssword  
       2012-04-20 10:06:57 +08:00 via Android
    nokogiri的语法比这种更好,xml本身就是有dom的
    csx163
        10
    csx163  
       2012-04-20 21:25:37 +08:00
    php 转换非标soap xml转得我想吐
    vixvix
        11
    vixvix  
       2012-04-20 22:19:56 +08:00
    magicshui
        12
    magicshui  
       2012-04-21 22:15:12 +08:00
    BS能做这件事情不?
    Livid
        13
    Livid  
    MOD
    OP
       2012-04-21 22:17:42 +08:00
    @magicshui 用 simplexml 可以对我主题里提到的 XML 实现这样的效果:

    xml['members']['member'][0]
    X_Del
        14
    X_Del  
       2012-04-21 22:20:05 +08:00
    这不是 ORM 吗?不过数据是用 XML 存的而已。
    Livid
        15
    Livid  
    MOD
    OP
       2012-04-21 22:20:55 +08:00
    @X_Del 嗯,类似 ORM 的概念。

    有以 XML 作为底层存储的 Python ORM 实现么?
    reus
        16
    reus  
       2012-04-21 23:52:44 +08:00
    封装一下标准库即可, https://gist.github.com/2437960
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:55 · PVG 00:55 · LAX 08:55 · JFK 11:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.