gpt4 book ai didi

python - 检查节点是否存在

转载 作者:行者123 更新时间:2023-12-04 03:15:08 26 4
gpt4 key购买 nike

我在 Dynamo 中使用 IronPython 2.7。我需要检查一个节点是否存在。如果是这样,节点中的文本应该写入列表。如果否,则应将 False 写入列表。

我没有收到任何错误。但是,即使列表中存在一个节点,它也不会在列表中写入文本。 False 被正确写入列表。

简单示例:

<note>
<note2>
<yolo>
<to>
<type>
<game>
<name>Jani</name>
<lvl>111111</lvl>
<fun>2222222</fun>
</game>
</type>
</to>
<mo>
<type>
<game>
<name>Bani</name>
<fun>44444444</fun>
</game>
</type>
</mo>
</yolo>
</note2>
</note>

因此,节点lvl 仅在第一个节点game 中。我希望生成的列表类似于 list[11111, false]

这是我的代码:

import clr
import sys

clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
sys.path.append("C:\Program Files (x86)\IronPython 2.7\Lib")
import xml.etree.ElementTree as ET

xml="note.xml"

main_xpath=".//game"
searchforxpath =".//lvl"

list=[]

tree = ET.parse(xml)
root = tree.getroot()

main_match = root.findall(main_xpath)

for elem in main_match:
if elem.find(searchforxpath) is not None:
list.append(elem.text)
else:
list.append(False)

print list

为什么列表在应该是字符串的地方是空的?我得到 list[ ,false]

最佳答案

您需要使用来自 elem.find 的匹配文本,而不是原始 elem:

 for elem in main_match:
subelem = elem.find(searchforxpath)
if subelem != None:
list.append(subelem.text)
else:
list.append(False)

关于python - 检查节点是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41725608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com