Python读取XML配置文件小例子

配置文件如下,名字为config.xml
<?xml version="1.0"?>
<config>
    <server>server1</server>
    <server>server2</server>
    <account>account</account>
    <pwd>pwd</pwd>
</config>

Python代码如下:
from xml.dom.minidom import parse, parseString

def getText(nodelist):
    rc = ""
    for node in nodelist:
        if node.nodeType == node.TEXT_NODE:
            rc = rc + node.data
    return rc


if __name__=="__main__":
    dom1 = parse('config.xml') # parse an XML file by name

    config_element = dom1.getElementsByTagName("config")[0]
    servers = config_element.getElementsByTagName("server")
    for server in servers:
        print getText(server.childNodes)

显示结果:
mail.hundsun.com
mail.hundsun.comdd

Python读取XML配置文件还是比较简单的,主要是perse的getElementsByTagName()函数,它返回的是NodeList对象。
Python 的Library Reference上如下解释NodeList:

A NodeList represents a sequence of nodes. These objects are used in two ways in the DOM Core recommendation: the Element objects provides one as its list of child nodes, and the getElementsByTagName() and getElementsByTagNameNS() methods of Node return objects with this interface to represent query results.

对NodeList中的每个Node,调用getText函数,如果是TEXT_NODE类型的,则将其打印出。
Node的childNodes的说明如下:

childNodes
A list of nodes contained within this node. This is a read-only attribute.
DOM的常用节点:
节点类型                                  例子
Document type                    <!DOCTYPE food SYSTEM "food.dtd">
Processing instruction              <?xml version="1.0"?>
Element                          <drink type="beer">Carlsberg</drink>
Attribute                          type="beer"
Text                               Carlsberg

Node 有个nodeValue属性,开始不知道和node的data属性有何差别,后来查了DOM的文档,如下解释:
XML 对象的节点值。如果 XML 对象是一个文本节点,则 nodeType 为 3, nodeValue 是节点的文本。如果 XML 对象是一个 XML 元素( nodeType 为 1),则 nodeValuenull 且只读

在Python里试了一下,对普通的文本节点,如“<server>mail.</server>”,nodeValue是1,为了要显示其文本内容,用.data属性和用.nodeValue属性是效果一样的,如:
            rc = ""
            for node in node.childNodes:
                if node.nodeType in ( node.TEXT_NODE, node.CDATA_SECTION_NODE):
                    rc = rc + node.nodeValue
                print rc

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值