xml.dom.minidom Python выпуск - PullRequest
0 голосов
/ 16 декабря 2009
from xml.dom.minidom import *

resp = "<title> This is a test! </title>"

rssDoc = parseString(resp)

titles = rssDoc.getElementsByTagName('title')

moo = ""

for t in titles:
    moo += t.nodeValue;

выдает следующую ошибку:

main.py, line 42, in
       get moo += t.nodeValue;
TypeError: cannot concatenate 'str' and 'NoneType' objects

Ответы [ 3 ]

2 голосов
/ 16 декабря 2009

Узел <title> содержит текстовый узел в качестве подузла. Может быть, вы хотите перебрать подузлы? Как то так:

from xml.dom.minidom import *

resp = "<title> This is a test! </title>"

rssDoc = parseString(resp)

titles = rssDoc.getElementsByTagName('title')

moo = ""

for t in titles:
    for child in t.childNodes:
        if child.nodeType == child.TEXT_NODE:
            moo += child.data
        else:
            moo += "not text "

print moo

Для изучения xml.dom.minidom вы также можете проверить раздел в Dive Into Python .

1 голос
/ 16 декабря 2009

Потому что это не текстовый узел, а узел элемента. Текстовый узел, содержащий строку «Это тест!», На самом деле является дочерним узлом этого узла элемента.

Таким образом, вы можете попробовать это (не проверено, не предполагает существование текстового узла):

if t.nodeType == t.ELEMENT_NODE:
    moo += t.childNodes[0].data
0 голосов
/ 16 декабря 2009

потому что t.nodeType, конечно, не равно t.TEXT_NODE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...