Разбор XML с использованием minidom - PullRequest
0 голосов
/ 12 июля 2011

У меня есть файл XML, в котором я хочу извлечь данные из определенных тегов, которые ТОЛЬКО вложены в другие теги, то есть теги, содержащие данные, которые я хочу извлечь, находятся в другом месте в документе XML.

Пример XML:

<root>
    <tag1>content I don't want</tag1>
    <tag2>content I don't want</tag2>
    <tag3>content I don't want</tag3>
    <item>
        <tag1>content I want</tag1>
        <tag2>content I want</tag2>
        <tag3>content I want</tag3>
    </item>
    <item>
        <tag1>content I want</tag1>
        <tag2>content I want</tag2>
        <tag3>content I want</tag3>
    </item>
</root>

Python-код (который извлекает все данные, в том числе из тегов, которые мне не нужны):

for counter in range(2):
    variable0 = XML_Document.getElementsByTagName('item')[counter]
    variable1 = XML_Document.getElementsByTagName('tag1')[counter].toxml(encoding="utf-8")
    variable2 = XML_Document.getElementsByTagName('tag2')[counter].toxml(encoding="utf-8")
    variable3 = XML_Document.getElementsByTagName('tag3')[counter].toxml(encoding="utf-8")
    print counter
    print variable1
    print variable2
    print variable3

Как изменить цикл, чтобы получить доступ только к данным в тегах, вложенных только в теги элементов?

1 Ответ

1 голос
/ 12 июля 2011

Вы всегда можете позвонить getElementsByTagName() на любой подузел:

for item in XML_Document.getElementsByTagName('item'):
    tag1 = item.getElementsByTagName('tag1')[0].toxml(encoding="utf-8")
    tag2 = item.getElementsByTagName('tag2')[0].toxml(encoding="utf-8")
    tag3 = item.getElementsByTagName('tag3')[0].toxml(encoding="utf-8")
    print tag1, tag2, tag3
...