文档介绍:
/
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'
这些结点通过名字很好理解。catalog是ELEMENT_NODE类型。
〉〉〉
1
〉〉〉
1
四、子元素、子结点的访问
访问子元素、子结点的方法很多,对于知道元素名字的子元素,可以使用getElementsByTagName方法,如读取maxid子 元素:
〉〉〉('maxid')
[<DOM Element: maxid at 0xb6d0a8〉]
这样返回一个列表,由于我们的例子中maxid只有一项,因此列表也只有一项。
如果想得到某个元素下的所有子结点(包括元素),可以使用childNodes属性:
〉〉〉
[<DOM Text node "\n "〉,<D0M Element: maxid at 0xb6d0a8〉,<DOM Text node "\n "〉,<DOM Element:
item at 0xb6d918〉, <DOM Text node "\n "〉, <DOM Element: item at 0xb6de40〉, <DOM Text node
"\n "〉, <DOM Element: item at 0xb6dfa8〉, <DOM Text node "\n"〉]
可以看出所有两个标记间的内容都被视为文本结点。象每行后面的回车,都被看到文本结点。从上面的结果我们可以看出每个 结点的类型,本例中有文本结点和元素结点;结点的名字(元素结点);结点的值(文本结点)。每个结点都是一个对象,不 同的结点对象有不同的属性和方法,更详细的要参见文档。由于本例比较简单,只涉及文本结点和元素结点。
getElementsByTagName可以搜索当前元素的所有子元素,包括所有层次的子元素。childNodes只保存了当前元素的第一 层子结点。
这样我们可以遍历childNodes来访问每一个结点,判断它的nodeType来得到不同的内容。如,打印出所有元素的名字:
〉〉〉for node in :
if == :
print
maxid
item item 对于文本结点,想得到它的文本内容可以使用:.data属性。
对于简单的元素,如:<caption>Python</caption>,我们可以编写这样一个函数来得到它的内容(这里为Python)。
def getTagText(root, tag):
node = (tag)[0]
〃 〃
rc =
for node in :
if in ( , ):
rc = rc +
return rc
这个函数只处理找到的第一个符合的子元素。它会将符合的第一个子元素中的所有文本结点拼在一起。当nodeType为文本类
结点时,。如果我们考查一下元素caption,我们可能看到:
[<DOM Text node ""Python""〉]
说明caption元素只有一个文本结点。
如果一个元素有属性,那么可以使用getAttribute方法,如:
〉〉〉itemlist = ('item')
〉〉〉item = itemlist[0]
〉〉〉('id')
ui
这样就得到了第一个item元素的属性值。
下面让我们简单地小结一下如何使用minidom来读取XML中的信息
,生成dom 对象
得到文档对象(根对象)
通过getElementsByTagName()方法和chi