2

我的问题是我想检查一个名为的 xml 变量中的一个变量,xmlauthor并且我想检查它上面是否基本上写了一些东西。我该怎么做?这是我到目前为止所写的:

for num in ic : 
    xmlauthor = dom.getElementsByTagName("author")[0]

    if not xmlauthor: 
        content += "***Changes by:"  + xmlauthor + "*** \n \n"
    else:
        content += "***Changes are made Anonumously** \n \n" 

这是我在控制台上遇到的错误

content += "***Changes by:"  + xmlauthor + "*** \n\n" 
TypeError: cannot concatenate 'str' and 'instance' objects
4

2 回答 2

8

假设您正在使用xml.domgetElementsByTagName不返回字符串列表,而是返回Element对象列表,因此您无法连接xmlauthor到行中的字符串

    content += "***Changes by:"  + xmlauthor + "*** \n \n"

您可以通过将其更改为:

    content += "***Changes by:"  + xmlauthor.childNodes[0].nodeValue + "*** \n \n"
于 2012-08-27T20:01:44.587 回答
3

下一次的一些提示:

  • 当您遇到类似的错误TypeError: cannot concatenate 'str' and 'instance'时,您可以从检查错误发生的位置开始。你在哪里向字符串添加一些东西?
  • 一旦您确定了问题所在(回溯无论如何都会为您提供行号),您可能需要检查您尝试添加到字符串中的对象的类型(在您的示例中,它是xmlauthor.Aprint type(xmlauthor)应该给您大量的信息。
  • 特别是,它可能会让您对对象是什么有所了解。在您的示例中,我们可以假设它是xml.dom模块中定义的某个对象。文档对此有何评论?你可以去看看docs.python.org,或者你可以试试help(your_object).
  • 是你期待的对象吗?可能不是。有没有更有趣的东西,比如这个对象的方法或属性可以解决你的问题?再一次,去检查文档,或者只是尝试dir(your_object)找到它可以提供的内容。
  • 也许它毕竟不是您需要的,或者您无法理解文档。那么在 SO 上提问是个好主意。但也只有那时。

有一个直接的答案当然很好,但是了解哪里出了问题更好,你会同意的。

于 2012-08-27T21:24:30.813 回答