【发布时间】:2016-07-28 22:17:37
【问题描述】:
我一直在使用 Untangle 库 (https://untangle.readthedocs.org/en/latest/#) 在 Python 中搞乱,以便更轻松地调用 XML 变量。这对我来说非常简单,除非有多个 xml 标题共享相同的名称(如下面的 XML 示例)。在 Perl 中,您可以使用类似下面的示例脚本来轻松解析 XML 文件。我希望像本例那样使用一行来获取某个 XML 变量。即使用 name 属性作为孩子。我打赌 Untangle 在 Python 中做到了这一点,但我还没有弄清楚。
示例 Perl 脚本:
use XML::Simple;
my $XML = "/my/file/path/untest.xml";
my $config = XMLin("$XML", keyattr => { child => 'name'},forcearray => ['child']);
my $instance = 'child1';
my $things = $config->{child}->{$instance}->{thing};
print("the element: $things\n");
示例 XML 文件:
<root>
<child name="child1">
<thing>1</thing>
</child>
<child name="child2">
<thing>2</thing>
</child>
</root>
编辑:编辑了示例 Perl 脚本。这应该有效。
【问题讨论】:
-
Untangle 是否以与 XML::Simple 相同的方式警告您?
-
那些不是命名空间。它们只是具有相同名称的普通元素(在默认命名空间中)
标签: perl python-2.7 xml-parsing