Я застрял с XML и Python.Задача проста, но я так и не смог ее решить и потратил столько времени.Я пришел сюда за советом, как решить эту проблему с помощью пары строк.
Спасибо за любую помощь в обходе дерева.Я всегда получал слишком много или слишком мало элементов.Элементы могут быть вложены без ограничений.Данный пример является лишь примером.Я приму любое решение, не придирчивое к dom, minidom, sax, к чему угодно.
У меня есть XML-файл, похожий на этот:
<root>
<elm>
<elm>Common content</elm>
<elm xmlns="http://example.org/ns">
<elm lang="en">Content EN</elm>
<elm lang="cs">žluťoučký koníček</elm>
</elm>
<elm xml:id="abc123">Common content</elm>
<elm lang="en">Content EN</elm>
<elm lang="cs">Content CS</elm>
<elm lang="en">
<elm>Content EN</elm>
<elm>Content EN</elm>
</elm>
<elm lang="cs">
<elm>Content CS</elm>
<elm>Content CS</elm>
</elm>
</elm>
</root>
Что мне нужно - разобрать XMLи написать новый файл.Новый файл должен содержать все элементы для данного языка и элементы без атрибута lang
.
Для языка "cs" выходной файл должен содержать следующее:
<root>
<elm>
<elm>Common content</elm>
<elm xmlns="http://example.org/ns">
<elm lang="cs">žluťoučký koníček</elm>
</elm>
<elm xml:id="abc123">Common content</elm>
<elm lang="cs">Content CS</elm>
<elm lang="cs">
<elm>Content CS</elm>
<elm>Content CS</elm>
</elm>
</elm>
</root>
Если вы можете сделатьчтобы пропустить атрибут lang
в новом файле, даже лучше.Но это не так важно.
UPDATE1: Добавлены символы Юникода и атрибут пространства имен.
UPDATE2: При использовании Python 2.5 предпочтительнее использовать стандартные библиотеки.