来自 Minidom 中元素的文本

text from element in minidom

提问人:Angie 提问时间:7/19/2023 最后编辑:Angie 更新时间:7/21/2023 访问量:26

问:

我有一个xml文件,其中包含多个标签PropertySetProperty,如下所示:

      <PropertySetProperty xsi:type="typens:PropertySetProperty">
        <Key>PackageIsPublic</Key>
        <Value xsi:type="xs:string">false</Value>
      </PropertySetProperty>

在其中一些上,我需要解析文档并更改 Value(例如从 false 更改为 true)。

这是我当前的代码,用于测试我是否具有正确的元素:

Import xml.dom.minidom as DOM
def changeProps(sddraftPath):
    # Read the sddraft xml.
    doc = DOM.parse(sddraftPath)
    properties = doc.getElementsByTagName('PropertySetProperty')
    for property in properties:
        key = property.firstChild.firstChild.data
        value = property.firstChild.nextSibling.data
        print(key, value)

当我调用该函数时,“value”行会抛出以下错误:

 "AttributeError: 'Element' object has no attribute 'data'"

如果我删除属性“data”,我会得到(例如)打印的结果:

PackageIsPublic <DOM Element: Value at 0x1d8e7ebe310>

如果我用nodeValue替换数据,结果是 因此,代码正在查找“value”标签,但无法识别其中有数据。但它确实可以识别“key”标签中的数据。知道这里发生了什么!!请帮忙!PackageIsPublic None

我想得到的是标签中的实际文本:

PackageIsPublic false
python-3.x xml 解析 minidom

评论

1赞 Siebe Jongebloed 7/19/2023
在这种情况下,只需将您的解决方案作为您自己问题的答案

答:

0赞 Angie 7/21/2023 #1

好的,所以在发布问题后玩弄它(当然在发布之前玩弄它没有产生结果)我已经想通了。我需要将firstChild添加到value标签中以获取文本元素:value = property.firstChild.nextSibling.firstChild.data