Я использую Python (minidom) для синтаксического анализа файла XML, который печатает иерархическую структуру, которая выглядит примерно так (отступы используются здесь, чтобы показать существенные иерархические отношения):XML Синтаксического с Python и minidom
My Document
Overview
Basic Features
About This Software
Platforms Supported
Вместо этого программа повторяется несколько раз над узлами и производит следующее, дублируя узлы. (Глядя на список узлов на каждой итерации, то понятно, почему он делает это, но я не могу найти способ, чтобы получить список узлов Я ищу.)
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 без особого успеха.
Если вы хотите выход первых вы можете просто напечатать текст из каждого элемента - Я не ясно, как structuting влияет на разыскиваемый OUTPUT – Mark