使用ElementTree

时间:2015-09-18 15:12:10

标签: python xml elementtree maya

您好我在Maya中编写了一些代码并遇到了ElementTree的一些问题。我需要帮助阅读这个xml或类似的东西。 XML是根据选择生成的,因此可以更改。

<root>
    <Locations>
        <1 name="CacheLocation">C:\Users\daunish\Desktop</1>
    </Locations>
    <Objects>
        <1 name="Sphere">[u'pSphere1', u'pSphere2']</1>
        <2 name="Cube">[u'pCube1']</2>
    </Objects>
</root>

我需要一种在“地点”中搜索特定“名称”的方法,并将文本传递给变量。

我还需要一种方法来遍历“Objects”中的每一行并执行一个函数,就像在for循环中一样。

我对所有的建议持开放态度,我一直在疯狂地试图让它发挥作用。如果您认为我应该以不同的方式格式化XML,那么我也应该这样做。在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

[注意:您的XML格式不正确,因为您的标签不能以数字开头] 不知道你尝试了什么,但有很多方法可以做到这一点,这里有一个:

在位置中找到名称= CacheLocation的第一个元素:

>>> filename = root.find("./Locations/*[@name='CacheLocation']").text
>>> filename
'C:\\Users\\daunish\\Desktop'

迭代对象中的所有元素:

>>> import ast
>>> for target in root.find("./Objects"):
...     for i in ast.literal_eval(target.text):
...         print(target.get('name'), i)
Sphere pSphere1
Sphere pSphere2
Cube pCube1