2015-09-18 1 views
0

Привет, я пишу немного кода im Maya и сталкиваясь с некоторыми проблемами с ElementTree. Мне нужна помощь в чтении в этом xml или что-то подобное. XML создается на основе выбора, поэтому он может меняться.Атрибут Parse XML для переменной с ElementTree

<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> 

Мне нужен способ поиска для конкретного «имя» внутри «Locations», и передавая текст переменной.

Мне также нужно пройти через каждую строку внутри «Объектов» и выполнить функции, как в цикле for.

Я открыт для всех предложений, я сошел с ума, пытаясь заставить это работать. Если вы думаете, что я должен отформатировать XML по-разному, я тоже за это. Заранее спасибо за помощь.

ответ

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 
+0

Удивительный человек! Я понятия не имел, что у меня не было тегов, которые начинались с цифр. В конце концов, все начинает искать, действительно ценит это. –