lxml读取标签的值更新并写入

<?xml version="1.0" encoding="UTF-8"?>
<urlset>
<url>
<lastmod>2014-08-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
<data>
<display>
<name>zhongguo</name>
<address>zhongguo</address>
<search>http://www.sohu.com</search>
</display>
</data>
</url>
<url>
<lastmod>2014-08-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
<data>
<display>
<name>中国</name>
<address>中国</address>
<search>http://www.abc.com</search>
</display>
</data>
</url>
</urlset>

我现在的需求是想将中的网址改成另一个网址并写入,比如将第一条url结果的”http://www.sohu.com“改成“http://www.sina.com”并写入xml文件中。请问该如何操作?

阅读 7.5k
1 个回答

lxml里面Element对象有个find的方法,先找到对应的path,然后修改就好了

# -*- coding: utf-8 -*- 

from lxml import etree

xml_string = u"""
<?xml version="1.0" encoding="UTF-8"?>
<urlset>
<url>
<lastmod>2014-08-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
<data>
<display>
<name>zhongguo</name>


<address>zhongguo</address>


<search>http://www.sohu.com</search>
</display>
</data>
</url>
<url>
<lastmod>2014-08-26</lastmod>
<changefreq>always</changefreq>
<priority>1.0</priority>
<data>
<display>
<name>中国</name>


<address>中国</address>


<search>http://www.abc.com</search>
</display>
</data>
</url>
</urlset>
"""

root = etree.fromstring(xml_string)
for url in root:
    url_tag = url.find("data/display/search")
    if url_tag.text == "http://www.sohu.com":
        url_tag.text = "http://www.sina.com"
print etree.tostring(root)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题