我一直在使用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脚本。这应该工作。
答案 0 :(得分:0)
如果XML文档中的同一级别有多个具有相同名称的元素,则该对象属性的值将为列表。这意味着您可以像这样访问问题中的数据
xml = untangle.parse(xml_file)
for child in xml.root.child:
print "Name: %s" % child['name']
print "Thing: %s" % child.thing