怎么用python获取xml文件的所有节点。

<?xml version="1.0" encoding="UTF-8"?>
<book>
<title>qwe</title>
<name>df</name>
<auto>cvb</auto>
<price>50</price>
</book>
怎么获取这个xml文件的title,name,auto,price标签。

假如我们有个xml文档如下:example.xml
<?xml version="1.0" encoding="UTF-8"?>
<BIT>
<GeneralDescription>
<name>Matlab</name>
<DateTime>2008-09-10 23:16:48</DateTime>
</GeneralDescription>
<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>
</BIT>
首先,要解析xml文档,需要导入一个模块
>>> from xml.dom.minidom import parse
(1)然后载入一个xml文档
>>> xmldoc = parse("J:/homeword/example.xml")
>>> print xmldoc.toxml()
<?xml version="1.0" ?>
<BIT>
<GeneralDescription>
<name>Matlab</name>
<DateTime>2008-09-10 23:16:48</DateTime>
</GeneralDescription>
<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>
</BIT>
>>>
上面是可以查看这个文档的内容。
Toxml方法打印出了node风格的xml,如果节点是Document结果,则打印出整个xml文档。否则只打印出本节点所属内容。
(2)如何获取子节点
>>> xmldoc.childNodes
[<DOM Element: BIT at 0x1223af8>]
>>>
每一个node都有一个childNodes的属性,他是一个node对象的列表,注意的是,一个Document只有一个子节点,上例中就是BIT这个节点,它属于Document节点。
因为是列表,所以也可以同用列表索引,xmldoc.childNodes[0]
>>> BIT_element = xmldoc.firstChild
>>> BIT_element
<DOM Element: BIT at 0x1223af8>
>>> print BIT_element.toxml()
<BIT>
<GeneralDescription>
<name>Matlab</name>
<DateTime>2008-09-10 23:16:48</DateTime>
</GeneralDescription>
<AMatrix>1,2,3;4,5,6;7,8,9</AMatrix>
</BIT>
>>>
(3)获得某一个节点的文本
>>> BIT_element.childNodes
[<DOM Text node "
">, <DOM Element: GeneralDescription at 0x1223be8>, <DOM Text node "
">, <DOM Element: AMatrix at 0x1223e40>, <DOM Text node "
">]
>>>name = (BIT_element.childNodes[1]).childNodes[1]
>>> >>> name.childNodes[0].data
u'Matlab'
>>>
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-05-08
我是用kxml包来解析的。详情请看 http://blog.163.com/li_wang157/blog/static/180556134201172711497228/

if (eventType == XmlPullParser.START_TAG
&& parser.getName().equals("rfid")) {// 解析RFID.xml
eventType = parser.nextTag();
if (parser.getName().equals("rname")) { //判断是否有rname标签
// 提取name值 parser.nextText()
rfidCard.setRname(parser.nextText());
}
// 读取下一个标签
eventType = parser.nextTag();
if (parser.getName().equals("cardnumber")) {
rfidCard.setCardnumber(parser.nextText());
}
eventType = parser.nextTag();
if (parser.getName().equals("team")) {
rfidCard.setTeam(parser.nextText());
}
eventType = parser.nextTag();
if (parser.getName().equals("power")) {
rfidCard.setPower(parser.nextText());
}
ContentManager.GetInstance().AddRfidRecord(rfidCard);
}本回答被提问者采纳
第2个回答  2011-08-29
xmldoc = ElementTree.parse('file')
allNodes = xmldoc.findall('./')

没调试,不知道对不对
第3个回答  2011-08-29
做人不要太懒了,自己看一下文档。Structured Markup Processing Tools -> xml -> dom ->minidom
相似回答