提问人:Angie 提问时间:7/19/2023 最后编辑:Angie 更新时间:7/21/2023 访问量:26
来自 Minidom 中元素的文本
text from element in minidom
问:
我有一个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
答:
0赞
Angie
7/21/2023
#1
好的,所以在发布问题后玩弄它(当然在发布之前玩弄它没有产生结果)我已经想通了。我需要将firstChild添加到value标签中以获取文本元素:value = property.firstChild.nextSibling.firstChild.data
评论