从XML中抓取/打印数据

时间:2013-07-12 19:39:00

标签: xml python-2.7 xml-parsing

好吧,我已经知道如何生成XML文件了。现在我想把它带回用于存储坐标的程序。以下是我在这个特定部分所做的工作。

def diplayX():
root = etree.parse('c:\\Users\namehere\Desktop\coord_man.xml').getroot()
x = root.findtext(x1elm)
print(x)

由于复制粘贴的XML文件不会显示代码,而只是这里的数字是相关XML的副本。更改了网络上的名称,而不是它产生了巨大的差异。 http://pastebin.com/yQfdFgwr

这是我的错误:

Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
sloop()
File "C:\Users\namehere\Desktop\Folder of CodeMonkey\piSrc\pyclickerXML.py", line 71,    in sloop
x = root.findtext(x1elm)
NameError: global name 'x1elm' is not defined

指定的XML文件中的x1elm = 300。这是由代码中的前一个方法生成的。

3 个答案:

答案 0 :(得分:1)

搜索文本x1elm必须在引号内:'x1elm'

答案 1 :(得分:1)

将x1elm放在引号中:

x = root.findtext('x1elm');

您必须传递与XML元素名称匹配的字符串。实际上,x1elm是一个Python变量,并且是一个未定义的变量。

答案 2 :(得分:0)

XML

<data>
    <items>
        <item name="item1">item1</item>
        <item name="item2">item2</item>
        <item name="item3">item3</item>
        <item name="item4">item4</item>
    </items>
</data>

Python:

from xml.dom import minidom
xmldoc = minidom.parse('items.xml')
itemlist = xmldoc.getElementsByTagName('item') 
print "Len : ", len(itemlist)
print "Attribute Name : ", itemlist[0].attributes['name'].value
print "Text : ", itemlist[0].firstChild.nodeValue
for s in itemlist :
    print "Attribute Name : ", s.attributes['name'].value
    print "Text : ", s.firstChild.nodeValue