Я использую Python (minidom) для анализа XML файла, который печатает иерархическую структуру, которая выглядит примерно так (здесь используется отступ, чтобы показать значительную иерархическую взаимосвязь):
My Document
Overview
Basic Features
About This Software
Platforms Supported
Вместо этого программа повторяется несколько раз над узлами и производит следующее, дублируя узлы. (Рассматривая список node на каждой итерации, очевидно, почему он это делает, но я не могу найти способ получить список node, который я ищу.)
My Document
Overview
Basic Features
About This Software
Platforms Supported
Basic Features
About This Software
Platforms Supported
Platforms Supported
Вот исходный XML файл:
<?xml version="1.0" encoding="UTF-8"?>
<DOCMAP>
<Topic Target="ALL">
<Title>My Document</Title>
</Topic>
<Topic Target="ALL">
<Title>Overview</Title>
<Topic Target="ALL">
<Title>Basic Features</Title>
</Topic>
<Topic Target="ALL">
<Title>About This Software</Title>
<Topic Target="ALL">
<Title>Platforms Supported</Title>
</Topic>
</Topic>
</Topic>
</DOCMAP>
Вот программа Python:
import xml.dom.minidom
from xml.dom.minidom import Node
dom = xml.dom.minidom.parse("test.xml")
Topic=dom.getElementsByTagName('Topic')
i = 0
for node in Topic:
alist=node.getElementsByTagName('Title')
for a in alist:
Title= a.firstChild.data
print Title
Я мог бы решить проблему, не вложив элементы "Тема" , изменив имена тем нижнего уровня на что-то вроде "SubTopic1" и "SubTopic2". Но я хочу использовать встроенное XML-иерархическое структурирование без необходимости использования разных имен элементов; кажется, что я должен иметь возможность встраивать элементы "Тема" и что должен быть какой-то способ узнать, на каком уровне "Тема" я сейчас смотрю.
Я пробовал несколько различных функций XPath без особого успеха.