首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用minidom获取多个子值

使用minidom获取多个子值
EN

Stack Overflow用户
提问于 2014-03-24 18:48:46
回答 2查看 1.6K关注 0票数 0

xml在这里中可以看到,有多个<item>节点,有一组子节点,如<summary><status><key>

我遇到的问题是,在使用minidom时,可以获得firstChild和lastChild的值,但不一定在两者之间得到任何值。

我已经创建了下面这个不起作用的东西,但我认为这是我需要做的事情的近似值。

代码语言:javascript
复制
import xml.dom.minidom

xml = xml.dom.minidom.parse(result) # or xml.dom.minidom.parseString(xml_string)

itemList = xml.getElementsByTagName('item')
for item in itemList [1:]:

    summaryList = item.getElementsByTagName('summary')
    statusList = item.getElementsByTagName('status')
    keyList = item.getElementsByTagName('key')

    lineText = (summaryList[0].nodeValue + " " + statusList[0].nodeValue  + " " + keyList[0].nodeValue)

    p = Paragraph(lineText, style)
    Story.append(p)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-24 18:57:13

定义连接所有文本子节点的get_text()函数(参见这个答案):

代码语言:javascript
复制
def get_text(element):
    return " ".join(t.nodeValue for t in element[0].childNodes 
                    if t.nodeType == t.TEXT_NODE)


dom = xml.dom.minidom.parseString(data)
itemList = dom.getElementsByTagName('item')
for item in itemList[1:]:
    summaryList = item.getElementsByTagName('summary')
    statusList = item.getElementsByTagName('status')
    keyList = item.getElementsByTagName('key')

    print get_text(summaryList)
    print get_text(statusList)
    print get_text(keyList)
    print "----"

指纹:

代码语言:javascript
复制
Unapprove all pull request reviewers after major change
Needs Triage
STASH-4473
----
Allow using left/right arrow to move side by side diff left/right
Needs Triage
STASH-4478
----

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2014-03-24 19:02:20

不如像这样

代码语言:javascript
复制
for item in itemList:
    lineText = ' '.join(child.nodeValue for child in item.childNodes)
    p = Paragraph(lineText, style)
    Story.append(p)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22618080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档