仅列出一个类别Python xml

时间:2012-09-29 10:37:01

标签: python xml dom lxml minidom

我正在尝试编写一个python程序,该程序使用DOM读取xml文件并打印另一个xml结构,该结构仅从一个具有特定选定属性“fun”的节点列出。

<?xml version="1.0" encoding="ISO-8859-1"?>
<website>
    <url category="fun">
        <title>Fun world</title>
        <author>Jack</author>
        <year>2010</year>
        <price>100.00</price>
    </url>

    <url category="entertainment">
        <title>Fun world</title>
        <author>Jack</author>
        <year>2010</year>
        <price>100.00</price>
    </url>
</website>

我无法从具有category =“fun”的网址中选择列表。

我试过这段代码:

for n in dom.getElementsByTagName('url'):
    s = n.attribute['category'] 
    if (s.value == "fun"):
        print n.toxml()

你们可以帮我调试我的代码吗?

2 个答案:

答案 0 :(得分:2)

nb:你的一个标签打开“网站”并尝试关闭“网站” - 所以你要修复那个......

您已经提到lxml

from lxml import etree as et

root = et.fromstring(xml)
fun = root.xpath('/Website/url[@category="fun"]')
for node in fun:
    print et.tostring(node)

答案 1 :(得分:0)

使用getAttribute

for n in dom.getElementsByTagName('url'):
    if (n.getAttribute('category') == "fun"):
        print(n.toxml())