【发布时间】:2010-08-29 01:38:42
【问题描述】:
我被 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:添加了 unicode 字符和命名空间属性。
UPDATE2:使用 Python 2.5,首选标准库。
【问题讨论】:
-
For "en" language the output file should containt this:我假设您的意思是说给定的输出是针对“cs”语言的? -
@LarsH:我更新了问题,在那里添加了一些 unicode 字符。你说得对,应该写:对于“cs”语言。会改的。