Импорт XML-словаря в Python

1

Мне нужна помощь в python. Я новичок в python. Я часто программировал в Objective-C.

В Objective-C мне удалось сохранить NSDictionary как XML файл и загрузить его с помощью простой команды. Ниже приведен пример сохраненного мной словаря xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>1</key>
    <string>Object One</string>
    <key>2</key>
    <string>Object Two</string>
    <key>3</key>
    <string>Object Three</string>
</dict>
</plist>

Если я загружу его в Objective-C, я могу напрямую получить словарь как NSDictionary.

Поэтому мой вопрос: как я могу сделать это легко в Python. Я нашел некоторые вещи, используя парсеры, такие как lxml. Мне удалось загрузить данные, но я не смог получить словарь только с ключами и значениями. Я искал много в Интернете, но не смог найти что-то подходящее. Кто-нибудь имеет идею или совет?

Я пробовал это: http://code.activestate.com/recipes/410469-xml-as-dictionary/, но мне не удалось заставить его работать.

Заранее благодарю вас!

  • 1
    «Мне не удалось заставить его работать». Ну, что с ним не так?
  • 0
    Я получил эту ошибку: если len (element) == 1 или element [0] .tag! = Element [1] .tag: Файл "lxml.etree.pyx", строка 1054, в lxml.etree._Element .__ getitem__ ( src / lxml / lxml.etree.c: 38293) IndexError: список индексов вне диапазона. Я знаю, что это означает, что я собираюсь куда-то далеко, но я не изменил код, за исключением того, что при запуске он сказал, что я необходимо изменить "если элемент" на "если элемент не None"
Теги:
dictionary
parsing

1 ответ

1
Лучший ответ

Использование plistlib: http://docs.python.org/dev/library/plistlib.html

pl = readPlist(pathOrFile)
print(pl["1"])
  • 0
    Это именно то, что мне было нужно! Большое спасибо!
  • 0
    @ user1314776 В стеке потока есть встроенный механизм для указания этого: просто пометьте ответ как «принятый». (Если у кого-то есть лучший ответ, вы всегда можете изменить это позже)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню